2015-06-22 15 views
10

Dodałem tę czcionkę do zasobu: BYekan.ttf
Chcę używać tej czcionki w mojej aplikacji. Próbowałem tego:Qt- Dodaj niestandardową czcionkę z zasobu

QFont font(":/images/font/BYekan.ttf"); 
    nLabel->setFont(font); 
    nLabel->setText(tr("This is for test")); 
    layout->addWidget(nLabel); 

Ale myślę, że to nie działa. Jak tego użyć?

Edit: Po przeczytaniu this question, próbowałem ponownie:

int fontID(-1); 
bool fontWarningShown(false); 
QFile res(":/images/font/Yekan.ttf"); 
if (res.open(QIODevice::ReadOnly) == false) { 
    if (fontWarningShown == false) { 
     QMessageBox::warning(0, "Application", (QString)"Impossible d'ouvrir la police " + QChar(0x00AB) + " DejaVu Serif " + QChar(0x00BB) + "."); 
     fontWarningShown = true; 
    } 
}else { 
    fontID = QFontDatabase::addApplicationFontFromData(res.readAll()); 
    if (fontID == -1 && fontWarningShown == false) { 
     QMessageBox::warning(0, "Application", (QString)"Impossible d'ouvrir la police " + QChar(0x00AB) + " DejaVu Serif " + QChar(0x00BB) + "."); 
     fontWarningShown = true; 

    } 
    else 
     nLabel->setFont(QFont(":/images/font/Yekan.ttf", 10)); 
} 

porównuję tę czcionkę i inne czcionki, ale nie jest inaczej na Qt. czemu?

+0

Spróbuj czcionki QFont (":/images/font/BYekan.ttf"); nLabel-> setFont (czcionka); – Ankur

+0

Próbowałem, ale nadal nie działa – AFN

Odpowiedz

21
int id = QFontDatabase::addApplicationFont(":/fonts/monospace.ttf"); 
QString family = QFontDatabase::applicationFontFamilies(id).at(0); 
QFont monospace(family); 
+0

Jak z niego korzystać? nLabel-> setFont (monospace (family)); Błąd: brak dopasowania dla połączenia z '(QFont) (QString &)' – AFN

+1

Nie, w ten sposób. nLabel-> setFont (monospace); – Ankur

+0

id to -1, jeśli nie można załadować czcionki – Paglian

1

W QML można

FontLoader { id: font; source: "/fonts/font.otf" } 
Powiązane problemy