Domanda

Progettazione interfacce utente con QtCreator sotto Windows, e il porting lo stesso file .ui sotto MacOSX porta a disegni con alcune parti testo molto piccolo - in realtà, quelli HTML. Sembra che deriva dal fatto che QtCreator utilizza pt invece di px come unità di dimensioni del testo, e che la risoluzione dello schermo di default sono molto diverse sotto Windows e MacOSX.

C'è qualche ragione per cui non sono venuto a risultati più coerenti? A parte la modifica di ogni pt in px, ce ne sono soluzione

Grazie.

È stato utile?

Soluzione

Come regola generale non si deve specificare le dimensioni per i controlli manualmente in Qt Designer / Creatore dei font come questo porta ai prolems che avete. La ragione di incoerenza è il fatto che diverse piattaforme utilizzano differenti impostazioni DPI (96 DPI su Windows vs 72 DPI su Mac OS X). Questo si traduce in caratteri visualizzati con dimensioni diverse.

Inoltre, lei ha citato HTML. Suppongo di aver impostato un testo HTML in un widget QTextEdit simile usando l'editor incorporato. Quando si seleziona una dimensione di carattere lì, Qt Creator produrrà alcuni HTML in questo modo:

<!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>

Come si può vedere, si definisce alcuni attributi font-size, che è davvero brutto. Un semplice, facile soluzione a questo desaster è quello di rimuovere gli attributi style= interamente. Questo fa sì che il QTextEdit per utilizzare il carattere applicazione predefinita invece (che dovrebbe andare bene su tutte le piattaforme):

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

Come sidenote, questo è molto più amichevole per i traduttori, in quanto non devono combattere attraverso tutta l'inutile CSS.

Purtroppo QTextEdit di Qt non supporta la specificazione "cento" font-size (appena px e pt). Se così fosse, si potrebbe avere usato qualcosa come "90%" per rendere il testo più piccolo del carattere predefinito, pur essendo dalla parte della sicurezza.

Un'altra opzione sarebbe un QWebView, che si fanno modificabile. Questo permette una buona formattazione del testo, pur avendo il sottoinsieme piena CSS. Ma che potrebbe essere eccessivo.

Speranza che aiuta!

Altri suggerimenti

Hai per impostare le proprietà di testo in voi .ui file? Di solito quando si imposta la proprietà di testo di un widget quindi UIC sostituisce completamente il carattere di quel widget con qualcosa che si crea da zero in codice. Se li si modifica su Windows, allora il tipo di carattere avrà un nome correlato finestre che potrebbe causare problemi sul mac.

Quello che faccio di solito è di non toccare i font nella finestra di progettazione in modo che i widget ottengono i loro valori predefiniti caratteri che di solito guardano bene e cambiarle in c'tor del widget in questo modo:

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

In questo modo si può evitare di fare confusione con tutto ciò che è piattaforma specifica. Se il cambiamento è in realtà specifica piattaforma è possibile scegliere quello giusto con l'uso di #ifdef Q_OS_WIN32 o #ifdef Q_OS_MAC

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top