のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

qt5 custom font

違うフォントが表示されているように思う。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QTextCodec>
#include <QFontDatabase>

#define TR(s) (QString::fromLocal8Bit(s))

bool MainWindow::canOpenFontFile(QString fileName)
{
    qint32 fontId = 0;

    if (fileName.isEmpty())
    {
        return false;
    }   else {
        QFile file(fileName);
        if (!file.open(QIODevice::ReadOnly))
        {
               QMessageBox::information(
                    this, TR("Unable to open file:\n"),
                           file.errorString()+"\n"+fileName);
               return false;
        }
    }
    return true;
}

bool MainWindow::canAddDb(QFontDatabase database, QString fileName)
{
    if (canOpenFontFile(fileName))
    {
        int result = database.addApplicationFont(fileName);
        if (result == -1)
        {
            QMessageBox::information(
                this, TR("Unable to install font file:\n"),
                    "fileName="+fileName);
            return false;
        }
    }
    return true;
}

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QString path = QCoreApplication::applicationDirPath();
    QString fileName = path +"/org.ttf";

    QFontDatabase database;

    if(canAddDb(database, fileName))
    {
        QFont f = database.font("myfont", "normal", 12);
//        f.setPointSize(12);
        ui->label01->setFont(f);
        ui->label02->setFont(f);
        ui->label03->setFont(f);
    }

    QString str01 = path;
    ui->label01->setText(str01);
    ui->label02->setText(TR("!#$%& 0123456789 abcdefghijklmnopqrstuvwxyz あいうえお 美しいフォント"));
    ui->label03->setText(TR("ヤマト、最大180円値上げ=基本運賃、27年ぶり"));

    QString str11 = path;
    ui->label11->setText(str11);
    ui->label12->setText(TR("!#$%& 0123456789 abcdefghijklmnopqrstuvwxyz あいうえお 美しいフォント"));
    ui->label13->setText(TR("ヤマト、最大180円値上げ=基本運賃、27年ぶり"));
 }

MainWindow::~MainWindow()
{
    delete ui;
}