請教各位高手Qt程式如何在ubuntu上顯示中文

喜歡程式設計嗎?想要一窺 KDE/Qt 程式設計的奧秘嗎?想要
學習 X Window 上的視窗程式設計嗎?歡迎各類關於 KDE/Qt、Qtopia、Qt/Embedded、QSA、PyQt 等各類心得討論。

版主: AceLan, Franklin

請教各位高手Qt程式如何在ubuntu上顯示中文

文章訪客 » 週三 4月 01, 2009 4:43 pm

請教各位高手Qt程式如何在ubuntu上顯示中文

我在windows上寫好程式後
移植到ubuntu 8.10上
但是跑出來的程式中文都變成亂碼
不知該怎麼做才能顯示中文
我有用qtconfig在字型的部份加入song ti
但沒有效果
訪客
 

文章neio » 週三 4月 01, 2009 5:08 pm

編碼問題嘛;
Big5 <=> UTF8?
neio
懵懂的國中生
懵懂的國中生
 
文章: 103
註冊時間: 週六 11月 13, 2004 8:26 pm

文章訪客 » 週三 4月 01, 2009 5:14 pm

我有將window版加入
QtextCodec::setCoderForCStrings(QtextCode::codecForName(Big5-Eten))
解決了window版亂碼的問題
當然我移植到ubuntu後有改成
QtextCodec::setCoderForCStrings(QtextCode::codecForName(UTF-8))
但沒有效果
我懷疑是在ubuntu上裝的x11沒有中文字型
但我linux不熟 所以不太了解真正的原因是什麼
訪客
 

文章neio » 週三 4月 01, 2009 9:37 pm

如是未裝中文字體,
可以在終端用 sudo aptitude install ttf-arphic-uming 指令安裝後測試看看。
neio
懵懂的國中生
懵懂的國中生
 
文章: 103
註冊時間: 週六 11月 13, 2004 8:26 pm

文章siyuan.nz » 週四 4月 02, 2009 4:44 am

在 Windows 下打出的中文一般是 Big5。若是拿同一個檔到 Linux 下,codecForName 還是應該用 Big5。如果你把 source 檔裡的中文用 Utf8 存,你可以直接用 QString::fromUtf8("中文")。
siyuan.nz
可愛的小學生
可愛的小學生
 
文章: 27
註冊時間: 週四 5月 31, 2007 3:57 pm
來自: 紐西蘭

文章訪客 » 週四 4月 02, 2009 10:19 am

樓上的大大說的沒錯
的確是要用Big5
後來我在qtconfig裡選了一個AR...tw的字型(唸起來好像是優明體?)
總算有一個能看的字型了
謝謝各位大大
不過
我寫的是一個電路圖編輯的軟體
會讀取大圖檔並常畫面更新
在windows上很流暢
但在ubuntu上卻有一點點lag的感覺
傷腦筋 明明是同一隻程式
還以為ubuntu效能會更好呢
訪客
 

文章訪客 » 週四 4月 02, 2009 10:51 am

剛才查了一下
windows 那台是 雙核 2GB
ubuntu 那台是 四核 4GB
竟然會lag
怎麼會這樣...
訪客
 

文章siyuan.nz » 週四 4月 02, 2009 5:22 pm

Ubuntu 那台用的是什麼顯示卡和驅動程式?
siyuan.nz
可愛的小學生
可愛的小學生
 
文章: 27
註冊時間: 週四 5月 31, 2007 3:57 pm
來自: 紐西蘭

文章訪客 » 週五 4月 03, 2009 9:19 am

大大你問到重點了
windows那台是Qusdro FX 560 聽說是繪圖卡
ubuntu那台則是一般的顯示卡
顯示卡很重要嗎? 但ubuntu那台cpu跟ram贏很多說...
訪客
 

文章訪客 » 週五 4月 03, 2009 9:26 am

目前是比較頃向於從軟體著手來改善效能
因為也不可能每個client端都給他很好的配備
目前發現lag的原因在於QPixmap物件做貼圖的動作
只要關掉QPixmap在背景貼圖的功能就不會lag了
QPixmap效能不好嗎? 不知有無其它更好的貼圖方式?
謝謝
訪客
 

文章siyuan.nz » 週六 4月 04, 2009 5:52 am

有些 open source 的顯示卡驅動程式因為缺乏原廠技術資料,很多東西無法用硬體加速。就我親身體驗,我有個老筆電用的是 sis 的顯示晶片,移動視窗時還會看到「殘影」。而另一部用 nVidia TNT2 的老電腦就非常順。

當然 painting 也是有不少學問,我不是行家我不敢亂說,不過也許你程式裡 painting 的部份還有改善空間。
siyuan.nz
可愛的小學生
可愛的小學生
 
文章: 27
註冊時間: 週四 5月 31, 2007 3:57 pm
來自: 紐西蘭

文章訪客 » 週一 4月 06, 2009 9:33 am

感謝大大的回覆
我是初學者 目前正在學習中
若有大大可以分享一下Qt貼圖的技巧
也可以嘉惠後進
謝謝
訪客
 

文章siyuan.nz » 週一 4月 06, 2009 12:59 pm

我也沒什麼技巧好分享,也不是很懂,而且有些東西你可能都已經做到了,不過還是可以交流一下經驗。
1) Repainting 盡量只做局部,不要整個重畫。
2) 如果繪圖須要大量的運算,可以嘗試 double buffering。
3) 可試試用 Qt Graphics View,曾經簡單用過一下,效能很不錯。不確定電路繪圖軟體適不適用,尤其是線路的部份不知用 Graphics View 是否好畫,但零件應該非常適合。
siyuan.nz
可愛的小學生
可愛的小學生
 
文章: 27
註冊時間: 週四 5月 31, 2007 3:57 pm
來自: 紐西蘭

文章訪客 » 週一 4月 06, 2009 2:32 pm

感謝大大的回覆
我曾經有考慮過要試試Qt Graphics View
不過要先練熟一點 到時再來報告試的結果
另外我看到一本書"精通Qt4編程"裡面寫說
Qt4會自動做double buffering的處理
所以我就沒有做這個處理了
不知這樣對嗎? 還是我誤解書中的意思?
謝謝
訪客
 

文章siyuan.nz » 週一 4月 06, 2009 6:16 pm

所有 Qt4 Widget 都有 double buffer,但是自己畫的圖沒有。在 C++ GUI Programming with Qt4 這本書裡有一章節提到一個例子要用 double buffer,有興趣可以參考看看。書裡的例子是一個很簡單的 2D plotter,如果沒事就要 repaint,重新算那線要怎麼畫會很慢。這時用個 pixmap buffer 來存已畫好的圖,需要 repaint 時直接把圖貼回來就好,不必重新算。

其實我覺得如果 Graphics View 適用,會比自己畫還容易。每個 Graphics Item 就當物件一樣,可以輕鬆移位或做其它處理,更方便的是 Graphics Item 還可以接收滑鼠或鍵盤的 event。。自己畫還得考慮怎麼 repaint,有時又要算在新的位置怎麼畫。
siyuan.nz
可愛的小學生
可愛的小學生
 
文章: 27
註冊時間: 週四 5月 31, 2007 3:57 pm
來自: 紐西蘭

下一頁

回到 KDE/Qt 程式設計

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客