例として、 Howto : Armadillo-440でQt! 第3回 で作成されたMainWindowにラベルを貼りつけて3種類のフォントで「こんにちは」を表示する方法を示す。
1.Armadillo-440のROMのユーザーランド領域には、日本語Truetypeフォントを複数置けるサイズはないので、予め、Truetypeフォント書き込んだMicroSDをArmadillo-440に挿入して起動する。
(下記サンプルコードでは、TakaoGothic.ttf、TakaoMincho.ttf、sazanami-mincho.ttf をMicroSDに置いた場合である。これらのttfファイルは、ATDEの/usr/share/fonts/truetype/にある。)
2.Armadilloの/usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts のフォントファイルを削除する。(標準では、TakaoPGothic.ttfが存在。)
[armadillo ~]$ ls /usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts TakaoPGothic.ttf [armadillo ~]$ rm -f /usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts/*.ttf
3.MicroSDをマウントする。 (Armadillo起動後、マウント済みであれば不要。)
[armadillo ~]# mount /dev/mmcblk0p1 /mnt/
4.QtCreatorで、「編集」を選択して、「mainwindow.cpp」をダブルクリックする。
->mainwindow.cppのソースの編集画面に変わる。
5.mainwindow.cppのインクルードファイルに
#include <QLabel> #include <QFont> #include <QTextCodec> #include <QFontDatabase>
を追加。
MainWindow::MainWindowに下記のように /**** Font Set: begin ****/<code>, <code>/**** Font Set: end ****/
で囲んだ範囲を追加。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); /**** Font Set: begin ****/ QWidget *cw = new QWidget(); setCentralWidget(cw); QLabel *label = new QLabel(cw); QLabel *label2 = new QLabel(cw); QLabel *label3 = new QLabel(cw); QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); int id = QFontDatabase::addApplicationFont("/mnt/fonts/TakaoGothic.ttf"); int id2 = QFontDatabase::addApplicationFont("/mnt/fonts/TakaoMincho.ttf"); int id3 = QFontDatabase::addApplicationFont("/mnt/fonts/sazanami-mincho.ttf"); QString family = QFontDatabase::applicationFontFamilies(id).at(0); QString family2 = QFontDatabase::applicationFontFamilies(id2).at(0); QString family3 = QFontDatabase::applicationFontFamilies(id3).at(0); label->setGeometry(20, 0, 200, 50); label->setFont(QFont(family, 40)); label->setText(QString::fromUtf8("こんにちは")); label2->setGeometry(20, 50, 200, 100); label2->setFont(QFont(family2, 40)); label2->setText(QString::fromUtf8("こんにちは")); label3->setGeometry(20, 100, 200, 150); label3->setFont(QFont(family3, 40)); label3->setText(QString::fromUtf8("こんにちは")); /**** Font Set: end ****/ }
6.ビルドしてデプロイ実行すると、ラベルに3種類のフォントで「こんにちは」と日本語表示される。
7.上記手順3でMicroSDに置いたフォントファイルを変更する場合は、
int id = QFontDatabase::addApplicationFont("/mnt/fonts/TakaoGothic.ttf"); int id2 = QFontDatabase::addApplicationFont("/mnt/fonts/TakaoMincho.ttf"); int id3 = QFontDatabase::addApplicationFont("/mnt/fonts/sazanami-mincho.ttf");
の""内のttfファイル名を変更する。
例えば、MicroSDに VL-Gothic-Regular.ttf を置いて、このフォントに変更する場合は、
int id = QFontDatabase::addApplicationFont("/mnt/fonts/VL-Gothic-Regular.ttf");
にする。