2015-06-22 12 views
10

Ho aggiunto questo tipo di carattere alla risorsa: BYekan.ttf
Desidero utilizzare questo carattere nella mia applicazione. Ho provato questo:Qt- Aggiungi carattere personalizzato dalla risorsa

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

Ma, suppongo che non funziona. Come usarlo?

Edit: Dopo aver letto this question, ho provato di nuovo:

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)); 
} 

paragono questo tipo di carattere e altro tipo di carattere, ma non v'è alcuna diversa su Qt. perché?

+0

Prova QFont carattere (":/images/font/BYekan.ttf"); nLabel-> setFont (font); – Ankur

+0

Ho provato, ma ancora non funziona – AFN

risposta

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

Come si usa? nLabel-> setFont (monospace (famiglia)); errore: nessuna corrispondenza per la chiamata a '(QFont) (QString &)' – AFN

+1

No, come questo. nLabel-> setFont (monospace); – Ankur

+0

id è -1, se il font non può essere caricato – Paglian

1

In QML è possibile

FontLoader { id: font; source: "/fonts/font.otf" } 
Problemi correlati