Pergunta

Designing UIs com QtCreator no Windows, e portando o mesmo arquivo .ui sob leads MacOSX para projetos com algumas partes texto muito pequeno - na verdade, os HTML. Parece que vem do fato de que usos QtCreator pt vez de px como unidade de tamanho do texto, e que as resoluções de tela padrão são bastante diferentes no Windows e MacOSX.

Existe alguma razão que eu não vim para resultados mais consistentes? Além de editar cada pt em px, há algum Solução ?

Graças.

Foi útil?

Solução

Como uma regra de ouro que você não deve especificar os tamanhos de fonte para controles manualmente no Qt Designer / Criador como isso leva à prolems você tem. A razão para a inconsistência é o fato de que diferentes plataformas usam diferentes configurações de DPI (96 DPI no Windows vs. 72 DPI no Mac OS X). Isso resulta em fontes sendo exibidos com tamanhos diferentes.

Além disso, você mencionou HTML. Eu suponho que você tiver definido algum texto HTML em um QTextEdit-como widget usando o editor embutido. Quando você seleciona um tamanho de fonte lá, Qt Creator irá produzir algum HTML assim:

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

Como você pode ver, ele define alguns atributos font-size, que é realmente desagradável. Uma solução simples e fácil para este desaster é remover os atributos style= inteiramente. Isso faz com que o QTextEdit para usar a fonte do aplicativo padrão em vez (que deve ficar bem em todas as plataformas):

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

Como nota, este é muito mais amigável para os tradutores, como eles não têm que lutar por tudo o CSS inútil.

Infelizmente QTextEdit do Qt não suporta o "por cento" especificação font-size (apenas px e pt). Se assim fosse, você poderia ter algo usado como "90%" para tornar o texto menor do que a fonte padrão, enquanto continuam sendo no lado seguro.

Outra opção seria um QWebView, o que você faz editável. Isto permite uma boa formatação de texto ao mesmo tempo que o subconjunto CSS completo. Mas isso pode ser um exagero.

Espero que ajude!

Outras dicas

Você tem que definir propriedades de texto em que você .ui arquivos? Normalmente, quando você definir a propriedade de texto de um widget em seguida, substitui UIC completamente a fonte desse widget com algo que ele cria a partir do zero no código. Se você editá-los em janelas, em seguida, a fonte terá um nome relacionado com janelas que pode causar problemas no Mac.

O que eu costumo fazer é não tocar as fontes no designer de forma que os widgets obter suas fontes defaults que geralmente parecem bem e alterá-las na c'tor do widget assim:

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

Desta forma, você pode evitar mexer com tudo o que é plataforma específica. Se a sua mudança é realmente plataforma específica, você pode escolher o caminho certo com o uso de #ifdef Q_OS_WIN32 ou #ifdef Q_OS_MAC

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top