簡體   English   中英

使用Qt中的自動縮放字體大小設計用戶界面

[英]Design user interfaces with automatically scaling fontsizes in Qt

Qt 5.7聲稱改進了對高DPI的支持。 使用現代的Qt,可以創建一個像以下這樣的應用啟動器:

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QApplication app(argc, argv);   
    return app.exec();
}

我希望UI在高DPI上運行時會自動縮放,但是縮放不一定能按預期工作。 至少在Linux下,它不能為我擴展UI。 我看到的是布局會擴大,但是字體會保持原樣,即Qt Creator在表單布局工具中為其分配的大小。

如果要為某個元素使用較大的字體,並在“設計”屏幕上進行設置,似乎沒有辦法說“兩倍大”。 相反,它將注入具有絕對磅值的font屬性。

QMessageBox靜態方法似乎也是如此。 顯示一個靜態QMessageBox,例如QMessageBox::info ,其文本和圖標未按比例放大以補償高dpi。

因此,您究竟應該怎么做才能使在Creator中以標准DPI設計的Qt應用程序自動適應高DPI環境,字體,QMessageBoxes等。

我已經設置了應用程序的樣式表,以將較大的字體用於QMessageBox。 但感覺很丑,我不確定如何自動觸發它。

編輯:

手動設置環境變量

declare -x QT_SCALE_FACTOR=2

確實會引起我正在尋找的那種行為。 但是如何僅在High DPI環境上自動執行此操作,最好在程序本身內部執行。 (我猜setenv (3)可以在Linux下工作)

從Qt5.11開始,以下內容對於4k屏幕的Ubuntu 18.04筆記本電腦似乎已經足夠了:

  • 從官方網站(而非apt)下載並安裝Qt5.11。
  • 打開~/.local/share/applications/DigiaQt-qtcreator-community.desktop文件。
  • 將行Exec=/path/to/Qt/Tools/QtCreator/bin/qtcreatorExec=env QT_AUTO_SCREEN_SCALE_FACTOR=1 /path/to/Qt/Tools/QtCreator/bin/qtcreator
  • 重新啟動Qt Creator。

在此處輸入圖片說明

暫無
暫無

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

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