2010年6月30日 星期三

Qt 之 QString 與 Char 間轉換 方法

在Qt下作字串處理時,有時候因為要跟別人的SDK作資訊的交換,使得Qt特有的QString其他SDK的函數無法接受,因此要作一次轉換到通用字串型別。在網路上找了一下,找到了方法。

[整理轉載]converting QString to char

QString str;
QByteArray byteArray=str.toLocal8Bit ();
char *c=byteArray.data();



基本上可以寫成函式
或者

 (char*)( ((QByteArray)str.toLocal8Bit()).data() )

2010年6月28日 星期一

QThread 之 主GUI Thread 與 子 Thread 之間通訊

原文QThread 通訊


在開始玩QThread後,愈到了Qt對於QThread的限制,也就是QThread無法直接對GUI直接控制(或建立)。

找了很多文章後,一開始是用很笨的polling方法,在GUI Thread中每當Thread啟動後,就設定QTimer,每一定的時間就去check特定變數,一旦當特定變數match到我所期望的值,立即去作相對應的GUI處理,QTimer會一直定期callback回來,直到子Thread結束運作為止。然而如此很消耗資源。

Qt ".pro" file 之設定

最近在接觸Qt的程式,因需求而需而額外include Libs,而碰到了一些QMake的設定問題。

麻煩的是QMake跟Make有著些微性的不同,對於初次接觸的我,造成了不少的困擾。

首先是LIBS參數的設置,QMake不需要加入-l (or -L)參數,加了可能會抓不到。

另外是Make的CFAGS參數,在QMake裡我還未找到對應的設置,所以必須手動在Make裡加入參數。

INCLUDEPATH參數也是一樣,不用加入-l (-L)。

2010年6月25日 星期五

Ubuntu上啟動CodeBlocks產生"codeblocks: relocation error"


在Ubuntu 10.04上安裝CodeBlocks碰到無法啟動的問題,錯誤訊息如下,


codeblocks: relocation error: /usr/lib/libcodeblocks.so.0: symbol _ZN13wxAuiNotebook7SetFontERK6wxFont, version WXU_2.8.5 not defined in file libwx_gtk2u_aui-2.8.so.0 with link time reference

2010年6月24日 星期四

Linux 命令提示字元之路徑顯示過長問題

原文參考 Linux 指令

當每次進入過深的目錄時,命令提示字元帶的絕對路徑都會很常,造成輸入與查看的不方便,因此上網找了修改提示字元的方式。

在~/.bashrc這個檔案裡,會有幾行設定環境變數PS1的程式,如下

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

把在尾巴的"\w"去掉後,重開終端機即可!

2010年6月15日 星期二

gvim 無法啟動

在ubuntu 10.04 gdm模式下,安裝了kde,結果造成了gvim無法在terminal下啟動。錯誤訊息是

"No protocol specified"
cannot open display


上網找尋了解決方法,如下


修改 /etc/kde/kdm/kdmrc 中的

ServerCmd=/usr/X11R6/bin/X

為:(其實就是加了 -ac參數)

ServerCmd=/usr/X11R6/bin/X -ac

搜尋此網誌