2017-08-19 3 views
0

J'apprends des exemples de Qt et d'exécution à partir de Qt SDK 5.9.1. Je cours le code ci-dessous et écris dedans QTextEdit mais aucun texte n'apparaît. Le curseur se déplace pendant que j'écris mais aucun texte n'est affiché. Le texte du titre de la fenêtre est affiché. J'ai ajouté addApplicationFont et setFont appels ci-dessous j'ai trouvé du web à l'échantillon mais cela n'a pas aidé.Texte invisible dans QTextEdit

#include <QtWidgets> 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QFontDatabase::addApplicationFont("://Ubuntu-R.ttf"); 
    app.setFont(QFont("Ubuntu", 11, QFont::Normal, false)); 

    QTextEdit textEdit; 
    textEdit.show(); 

    return app.exec(); 
} 

Je suis sur Ubuntu 16.04 et exécuter des commandes suivantes sur bash pour rendre exécutable:

qmake -makefile 
make 
./part1 

Je veux l'application d'utiliser la police par défaut du système Ubuntu. J'ai appris que Qt utilise fontconfig pour les polices, mais je ne sais pas comment tracer le problème.

Modifier

Je pensais que QFontDatabase::addApplicationFont("://Ubuntu-R.ttf") police système référencé appel mais il fait référence fichier de ressources de l'application de la police. Je n'ai pas de fichier de ressources donc évidemment, ça ne marchera pas.

fichier .pro est ci-dessous (fichier non modifiée de l'échantillon):

QT += widgets 
SOURCES = main.cpp 

# install 
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tutorials/gettingStarted/gsQt/part1 
INSTALLS += target 

J'ai essayé de la police du système en utilisant QFontDatabase mais cela n'a pas fonctionné:

app.setFont(QFontDatabase::systemFont(QFontDatabase::GeneralFont)); 

Cela ne fait rien avec l'une des valeurs enum y compris QFontDatabase::GeneralFont

QFontDatabase database; 
QStringList fam = database.families(); 

fam siz e est zéro.

Je vais essayer d'utiliser la police intégrée suivante.

Répondre

1

Je ne connais pas la raison exacte du problème, mais la raison n'était pas de configurer la dépendance de fontconfig correctement avant de construire qt. Je l'ai résolu en reconfigurant et recompilant qt à nouveau. Vous pouvez trouver plus de détails à qt forum.