2014-03-07 60 views
6

我想控制所有文字元素的pointsize到像素縮放在我的Qt 5.2.1 QML/C++應用程序。如何更改QML應用程序的邏輯DPI?

我有像寬度,高度和點間距計算用於普通尺寸適當的像素大小的目標顯示特性的QML單獨組件,例如,以像素爲推薦的大小爲觸摸屏按鈕。這適用於我編寫的控件,但Text元素有一個非常好的font.pointSize,如果我可以只設置用於文本縮放的邏輯DPI,我會使用它。

我用這個具有非常不同的屏幕DPI來模擬目標設備,而我的96 DPI發展屏上調試。例如,我想運行我的應用程序,針對1280×720 133DPI顯示,有喜歡的元素:

Text { font.pointSize: 72; text: 「Xy」 } 

顯示133個像素高,而不是96像素高的文字,我得到,因爲OS告訴Qt我有一個96 DPI監視器連接。我想重寫我的應用程序的邏輯DPI縮放比例。

我可以通過QGuiApplication QScreen列表看到logicalDotsPerInchX。有大量關於如何獲得邏輯DPI的文檔。但我找不到有關如何更改它的任何信息。

如何更改邏輯DPI爲我的Qt應用程序?

回答

0

我不認爲你可以簡單地更改QScreen類的DPI值(只有公共getter方法)。 也許有一些「黑客」的問題,如果你修改QScreen類,並添加一個公共setter或自己的東西,然後重新編譯Qt,但這可能是一些工作,並需要很多時間...

另一個解決方案可能只是爲您的字體大小添加比例因子?我不知道你有多少,但可以簡單地在QML中完成,我甚至使用類似於生產設置的東西來將字體和其他尺寸正確地縮放到設備。 你可能use Screen.pixelDensity或只是定義你的自定義QML屬性,並將其乘以所有字體大小?如果你這樣做,你可以動態改變應用程序運行時的大小。

+0

我希望不是這樣,但你是正確的。我最終得到了一個類似於你的建議的解決方案;我註冊了一個跟蹤DPI併爲pt,mm和in(ches)提供常量的C++單例。例如:文本{text:'hi'; font.pixelSize:24 * UI.pt} 使用Qt 5.5和5.6的高DPI支持改進的問題,但如果縮放倍率不是整體有走樣的問題。我的課很容易使用,我不打擾高DPI的支持,但我正在做嵌入式開發;高DPI適用於桌面應用程序。 – pixelgrease

相關問題