Question

Design avec UIs QtCreator sous Windows, et le portage du même fichier .ui sous MacOSX conduit à des conceptions avec certaines parties texte très petites - en fait, les HTML. Il semble qu'il vient du fait que QtCreator utilise pt au lieu de px comme unité de la taille du texte, et que les résolutions d'écran par défaut sont tout à fait différent sous Windows et MacOSX.

Y at-il raison que je ne suis pas venu à des résultats plus cohérents? Mis à part l'édition de chaque pt dans px, sont-il solution ?

Merci.

Était-ce utile?

La solution

En règle générale, vous ne devez pas spécifier la taille des polices pour les commandes manuellement dans Qt Designer / Créateur car cela conduit aux prolems que vous avez. La raison de l'incohérence est le fait que les différentes plates-formes utilisent différents paramètres DPI (96 dpi sur Windows par rapport à 72 DPI sous Mac OS X). Il en résulte des polices affichées avec des tailles différentes.

En outre, vous avez mentionné HTML. Je suppose que vous avez défini un texte HTML dans un widget comme QTextEdit en utilisant l'éditeur intégré. Lorsque vous sélectionnez une taille de police là, Qt Creator produira du HTML comme ceci:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hello World</p></body></html>

Comme vous pouvez le voir, il définit des attributs de font-size, ce qui est vraiment méchant. Une solution simple et facile à ce desaster est de supprimer les attributs style= entièrement. Cela provoque le QTextEdit utiliser à la place de la police de l'application par défaut (qui devrait être bien sur toutes les plateformes):

<html><head></head><body><p>Hello World</p></body></html>

En tant que sidenote, c'est beaucoup plus favorable pour les traducteurs, car ils ne doivent pas se battre par tous les CSS inutiles.

Malheureusement QTextEdit Qt ne prend pas en charge la spécification font-size "pour cent" (juste px et pt). Si elle l'a fait, vous auriez pu utiliser quelque chose comme « 90% » pour rendre le texte plus petit que la police par défaut tout en étant sur le côté.

Une autre option serait un QWebView, que vous rendre modifiable. Cela permet une bonne mise en forme du texte tout en ayant le sous-ensemble complet de CSS. Mais cela pourrait être surpuissant.

L'espoir qui aide!

Autres conseils

Avez-vous de définir les propriétés de texte en vous .ui fichiers? Habituellement, lorsque vous définissez la propriété de texte d'un widget puis UIC remplace complètement la police de ce widget avec quelque chose qui crée à partir de zéro dans le code. Si vous les modifiez sur les fenêtres, puis la police aura une fenêtre nom lié qui pourrait causer des problèmes sur le Mac.

Qu'est-ce que je fais d'habitude est de ne pas toucher les polices dans le concepteur de sorte que les widgets obtiennent leurs polices de Défaillances qui semblent généralement bien et de les changer dans le c'tor du widget comme ceci:

QFont f = ui.someLabel->font(); // get the current (default) font from the widget
f.setBold(true); // change only what's need to be changed
ui.someLabel->setFont(f); 
      // set the new and impreved font back to where it came from

De cette façon, vous pouvez éviter de jouer avec tout ce qui est la plate-forme spécifique. Si votre changement est en fait la plate-forme spécifique, vous pouvez choisir la bonne avec l'utilisation de #ifdef Q_OS_WIN32 ou #ifdef Q_OS_MAC

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top