2016-01-27 5 views
0

Я работаю над настольным приложением, которое иногда приходится запускать на виртуальной машине с помощью Windows Remote Desktop для доступа. Шрифты и градиенты заметно ухудшаются по внешнему виду при работе через Remote Desktop. Шрифты явно не сглаживаются (и обычно). Градиенты вырождаются в более крупные полосы сплошного цвета, теряя более плавный вид. Первоначально я предполагал, что Windows делает это для повышения производительности, но когда я сравнивал шрифты приложений в нашей продукции с приложениями в других приложениях (в частности, Visual Studio), я вижу, что Qt определенно отображает шрифты в диалоговом окне и QGraphicsScene по-разному.Внешний вид приложения Qt, выполняющийся через удаленный рабочий стол

В строке заголовка приложения моего приложения я вижу, что шрифт точно соответствует внешнему виду других заголовков заголовков приложений, и это имеет смысл, потому что Windows рисует это. В моем приложении все верхние пункты меню и шрифты в диалогах не сглаживаются и выглядят ужасно. Мы широко используем QGraphicsScene, и эти шрифты также ухудшаются.

У меня нет другого приложения, которое генерирует градиенты, чтобы сравнить их, но я просмотрел изображение с высоким разрешением через подключение к удаленному рабочему столу с помощью средства просмотра изображений Windows и выглядит так же хорошо, как на локальном рабочем столе.

Деградированный внешний вид означает, что мы не можем делать скриншоты для документации при использовании виртуальной машины. Мы также часто должны делать демонстрации с использованием виртуальных машин и удаленного рабочего стола, и внешний вид не привлекателен для показа клиентам. В нашей отрасли и внутри нашей компании усиливается давление на использование виртуальных машин вместо локальных физических машин, поэтому это становится более серьезной проблемой.

Оба симптома приводят меня к тому, что Qt знает, что я визуализирую с помощью Remote Desktop и что он предпочитает ухудшать внешний вид в пользу производительности. Я не хочу этого или, по крайней мере, мне нужно контролировать его.

Я подозреваю, что это похоронено где-то в системе стиля/темы Qt, но мне не повезло найти подсказки, которые указывают мне на правильное место, чтобы что-то сделать с этим, или, по крайней мере, ответ, который указывает, это даже не возможно. Любые советы высоко ценится.

ответ

0

С QGraphicScene у нас есть OpenGL для рендеринга. И с некоторыми из VM мы в основном полагаемся на программное обеспечение, имитирующее OpenGL через MS DirectX, которое предназначено для программного обеспечения, а не для аппаратного обеспечения. Самый популярный программный рендеринг OpenGL основан на ANGLE.

Чтобы улучшить рендеринг на виртуальной машине, я попытался создать пользовательский Qt для вашего приложения, используя один из предложенных Qt build configurations для настройки конкретной сборки Windows Qt.

С развитием Qt это немного запутывает: какая конфигурация является лучшей. Мне сказали, что с Qt 5.5 -opengl dynamic будет оптимальным для большинства сред. Я использовал конфигурацию -opengl es2 с Qt 5.3, и это хорошо работало, не ухудшая графику, но помните, что виртуальные машины используются от VMware, а не от MS Hyper-V, что даже не позволяет загружать приложение из-за невозможности инициализации OpenGL, и я не мог сделайте ANGLE, чтобы помочь здесь с этим конкретным Qt.

+0

«С QGraphicScene у нас есть OpenGL для рендеринга» - только если он настроен так. –

+0

@FrankOsterfeld Я предполагаю, что если он не настроен так, то графика не так хороша. BTW, как настроить его для использования OpenGL? Я имею в виду даже НЕ УГОЛ. – AlexanderVX

+0

Если проблема была ограничена QGraphicsScene, я мог бы рассматривать это как решение, но это все аспекты приложения ... шрифты в меню верхнего уровня, в диалоговых окнах и т. Д. Все это ухудшается, но только в нашем приложении Qt, а не в других программах Windows. Переход на OpenGL-рендеринг (который может оказаться нецелесообразным для нас) для сцены не поможет остальным. Моя догадка заключается в том, что это что-то в системе стиля, и что Qt обнаруживает подключение к удаленному рабочему столу и выбирает различные варианты стилизации. Любые идеи в этой области? – goug

0

Мне удалось решить проблему со шрифтами в QGraphicsScene. Из-за характера нашего продукта обработка шрифтов для графических элементов была довольно специализированной и очень ранней разработки, когда я был очень знаком с Qt, я установил стратегию стиля для этих шрифтов в QFont :: ForceOutline, потому что я не хотите, чтобы шрифт соответствовал любым растровым шрифтам. Благодаря экспериментам я обнаружил, что эта стратегия приводит к тому, что шрифты не сглаживаются при работе через Remote Desktop. Переход на QFont :: PreferAntialias устранял проблему для шрифтов в сцене, и это существенное и приятное улучшение.

К сожалению, мне не удалось найти решение для общих шрифтов приложений, а также для деградации градиента, но, по крайней мере, с помощью шрифтов, у меня есть что-то еще. Следующим шагом будет запуск проверки шрифтов, которые Qt использует по умолчанию для некоторых виджетов и просмотра их атрибутов.

 Смежные вопросы

  • Нет связанных вопросов^_^