• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-18  評論-11  文章-12  trackbacks-0

            2008.2.27 by RonLiu

            方法一:使用tr()函數(shù)

            QT中,用QString存儲所有可見得文本/字符串,使用tr()將各種字符編碼的文本轉(zhuǎn)化為QString,然后既可以將他們設(shè)置為控件的顯示文本。

            在Widget的構(gòu)造函數(shù)中加入:

            QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk"));

            QFont font1("Times", 12, QFont::Normal, FALSE);

            this->setFont(font1);

            這樣在該窗體的其他位置,可以使用tr()設(shè)置控件的內(nèi)容,他們均可以顯示為中文了。

            setWindowTitle(tr("消息嗅探器"));

            注意:這種方式設(shè)置的中文顯示對于整個(gè)控件,以及它們的子控件都生效。如果在子控件中另外設(shè)置了setFont(),那么全局的字體方案將會失效。

            方法二:使用translate()轉(zhuǎn)換

            先將需要顯示的中文轉(zhuǎn)化為gbk編碼的unicode,然后將unicode轉(zhuǎn)化為QByteArray,在將只轉(zhuǎn)化為char指針,并傳遞給translate()函數(shù)。

            注意:這種方法顯示中文時(shí),會出現(xiàn)失效的情況。譬如在菜單欄中可以顯示中文,但是在Label或者Button中卻無法顯示中文。

            另外,這種方法僅僅建議只有少數(shù)按鈕顯示中文時(shí)選用,否則,代碼寫得也麻煩呀。

            如果使用QDesigner生成的ui文件,后創(chuàng)建的界面類,一般都有一個(gè)retranslateUI,就是做這個(gè)用的。

            const char * stringToUnicode(const char *str)

            {

            static QTextCodec *codec = QTextCodec::codecForName("gbk");

            QByteArray qba = (codec->toUnicode(str)).toLocal8Bit();

            const char * c_str = qba.data();

            return c_str;

            }

            menuFile->setTitle(QApplication::translate("MainWindow", stringToUnicode("文件"), 0, QApplication::CodecForTr));

            QTextCodeC用于在不同的編碼方案之間進(jìn)行轉(zhuǎn)換。

            方法三:使用Linguist

            這是QT自帶的用于軟件本地化的軟件的工具。沒仔細(xì)研究過。

            這種方式可以用于外文軟件的本地化,那么相比于前兩者方式,處于更高的層次。

            延生一:編寫多語言版本的QT程序

            (本部分內(nèi)容參考QT手冊Internationalization一節(jié))

            在方法一和方法二種,仍然是一個(gè)程序?qū)?yīng)一個(gè)語言。如果希望QT程序針對不同的語言,有不同的版本,該如何操作?

            準(zhǔn)備一個(gè).pro文件,如:

            HEADERS         = funnydialog.h \

                               wackywidget.h

            SOURCES         = funnydialog.cpp \

                               main.cpp \

                               wackywidget.cpp

            FORMS           = fancybox.ui

            TRANSLATIONS    = superapp_dk.ts \

                               superapp_fi.ts \

                               superapp_no.ts \

                               superapp_se.ts

            1. 使用lupdate,從QT程序中抽取可轉(zhuǎn)換的文本,生成一個(gè)ts文件。

            2. 使用Linguist工具,在原始文本間轉(zhuǎn)換。ts文件以xml格式保存,可以手動修改。

            3. 運(yùn)行l(wèi)release,生成輕量級的qm格式的消息文件。這種文件可以在程序中使用。

            4. In your application, you must QTranslator::load()  the translation files appropriate for the user's language, and install them using QCoreApplication::installTranslator().

            posted on 2009-02-26 20:09 ronliu 閱讀(841) 評論(0)  編輯 收藏 引用
            久久精品国产第一区二区| 狠狠色婷婷久久综合频道日韩| 欧美黑人激情性久久| 亚洲午夜无码久久久久小说| 久久成人国产精品免费软件| 久久精品无码专区免费青青| 久久久久国产精品三级网| 中文字幕无码精品亚洲资源网久久| 精品熟女少妇av免费久久| 久久久WWW成人免费精品| 狠狠综合久久AV一区二区三区| 久久免费精品一区二区| 亚洲成色www久久网站夜月| 久久久WWW成人免费毛片| 久久国产免费观看精品3| 伊人久久五月天| 93精91精品国产综合久久香蕉 | 久久精品夜色噜噜亚洲A∨| 色欲综合久久躁天天躁蜜桃| 久久男人中文字幕资源站| 丁香狠狠色婷婷久久综合| 久久亚洲AV无码精品色午夜| 久久91精品综合国产首页| a级成人毛片久久| 久久天堂AV综合合色蜜桃网| 久久综合日本熟妇| 久久精品国产欧美日韩| 国产高潮国产高潮久久久91| 国产精品99久久精品| 久久久久国产精品熟女影院| 亚洲国产精品久久电影欧美| 国产成人精品综合久久久| 精品久久久一二三区| 久久久久久免费视频| 超级97碰碰碰碰久久久久最新| 久久中文字幕人妻丝袜| 久久这里的只有是精品23| 久久香综合精品久久伊人| 99蜜桃臀久久久欧美精品网站| 91麻豆国产精品91久久久| 欧美午夜精品久久久久免费视 |