2017-08-25 98 views
1

當我使用any method選擇非默認(或基地)樣式Qt的快速控制2應用(即通用之一材料),那麼所有的文本(其字體大小必須依靠QGuiApplication::font)控制像LabelTextField,使用字體大小值,QCoreApplication有改變之前:字體大小控件2

QFont font = application.font(); 
bool ok = false; 
font.setPointSize(QSettings{}.value("fontSize", 17).toInt(&ok)); 
Q_ASSERT(std::exchange(ok, false)); 
application.setFont(font); 

只有TextTextField適當調整,但他們在我的GUI沒有用的。

當我堅持默認樣式,然後所有提到的項目都適當調整大小。

如何使所有項目的大小取決於全球font.pointSize何時使用樣式,其他默認

相互連接的問題是如何獲得適當的(意思是「對比度」和風格符合的),比如說顏色,突出顯示的文本和背景爲當前主題風格中使用?從兒童ApplicationWindow使用SystemPalette { id: palette }給出了只適合默認風格的顏色(比如palette.highlightedText"white"palette.highlight"blue""darkblue"(不知道))。它看起來醜陋的風格主題,從默認不同。

另一個重要的觀察是:如果我將font.pointSize: 17(或同等font: Qt.application.font)根ApplicationWindow,那麼所有的項目都適當調整,除了那些他們具有新的上下文的:說,highlight:delegate: s轉換*View S,sourceComponent: s轉換Loader S,ComponentRepeater和其他的默認屬性項,其中因迷路父Item的上下文的字體休息的繼承。

看來,我應該爲每一個新的上下文手動「繼承」 ApplicationWindow.window.font。如果是這樣,那很傷心。這很無聊,例如,如果在Repeater我用RowLayout有大量的Label S:在每個Label我要補充font: ApplicationWindow.window.font

+0

BTW嘗試不同風格的主題,給人一​​種找到所有的不好的設計決策的機會。它就像一個用於GUI的篩選器,它用'font.pointSize'的合理範圍枚舉所有可能的樣式。 – Orient

回答

0

東方,我知道這是爲時已晚,但人們也可以設置字體大小QApplication這樣的:

QFont font = QApplication::font(); 
font.setPointSizeF(fontSize); 
QApplication::setFont(font); 
+0

這是無稽之談。 * QML *應用程序不需要'QApplication',只需'QGuiApplication'。有[甚至是警告](http://doc.qt.io/qt-5/qapplication.html#setFont)不能像你所說的那樣做。 – Orient