簡體   English   中英

在遠程桌面上運行的Qt應用程序外觀

[英]Qt Application Appearance Running Over Remote Desktop

我使用的桌面應用程序有時需要在使用Windows Remote Desktop進行訪問的虛擬機上運行。 通過遠程桌面運行時,字體和漸變的外觀明顯下降。 字體顯然不是抗鋸齒的(並且通常是),漸變會退化為更大的純色帶,從而失去了平滑的外觀。 最初,我以為Windows就是在這樣做以提高性能,但是當我將產品中的應用程序字體與其他應用程序(特別是Visual Studio)中的應用程序字體進行比較時,我發現Qt在對話框和QGraphicsScene呈現字體肯定不同。

在我的應用程序的應用程序標題欄中,我看到該字體與其他應用程序標題欄的外觀完全匹配,這很有意義,因為Windows會繪制該字體。 在我的應用程序中,對話框上的所有頂部菜單項和字體都沒有消除鋸齒,看起來很糟糕。 我們廣泛使用QGraphicsScene ,而且這些字體也會降級。

我沒有其他應用程序可以生成漸變以進行比較,但是我使用Windows圖像查看器通過“遠程桌面”連接查看了高分辨率圖像,它看起來與本地桌面上的效果一樣好。

外觀下降意味着使用VM時無法為文檔做屏幕截圖。 我們也經常需要使用VM和遠程桌面進行演示,並且外觀並不吸引客戶。 在我們行業和公司內部,使用VM代替本地物理計算機的壓力越來越大,因此這成為一個更大的問題。

這兩種症狀使我相信Qt知道我正在通過Remote Desktop進行可視化,並且它選擇降低外觀以提高性能。 我不想要,或者至少需要控制它。

我懷疑這是埋在Qt的樣式/主題系統中的某個地方,但是我沒有運氣找到線索,可以將我指向正確的位置以進行此操作,或者至少給出一個表明是否可能的答案。 。 任何意見是極大的贊賞。

使用QGraphicScene我們可以使用OpenGL進行渲染。 對於某些VM,我們主要依賴於通過MS DirectX模擬OpenGL的軟件,該軟件用於軟件而非硬件支持的渲染。 最受歡迎的OpenGL渲染軟件基於ANGLE

為了改善在VM上的呈現,我將嘗試使用建議的Qt構建配置之一為您的應用構建自定義Qt,以配置特定的Windows Qt構建。

隨着Qt的發展,它變得有些混亂:哪種配置是最佳的。 有人告訴我,由於Qt 5.5 -opengl dynamic對於大多數環境而言都是最佳的。 我曾經使用Qt 5.3配置-opengl es2配置,並且在不降低圖形性能的情況下運行良好,但是請注意,使用的VM是來自VMware而不是MS Hyper-V,由於OpenGL無法初始化,我什至無法加載應用程序,我無法使ANGLE在此幫助該特定的Qt。

我能夠解決QGraphicsScene中的字體問題。 由於我們產品的性質,圖形項的字體處理相當專業,並且在我剛接觸Qt的開發初期,我就將那些字體的樣式策略設置為QFont :: ForceOutline,因為我沒有希望字體匹配使用任何位圖字體。 通過實驗,我發現這種策略導致在通過遠程桌面運行時字體不會被消除鋸齒。 更改為QFont :: PreferAntialias解決了場景中字體的問題,這是一項重大且令人歡迎的改進。

不幸的是,我無法找到通用應用程序字體的解決方案,也無法找到漸變效果的解決方案,但是至少對於字體,我還有很多工作要做。 我的下一步將是開始檢查Qt在某些小部件上默認使用的字體,並查看它們的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM