例として、 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 ****/
, /**** 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");
にする。