2017-08-25 2 views
1

コントロール素材)、そのフォントサイズ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に応じて、すべてのアイテムをサイズ変更する方法デフォルト

もう1つの問題は、現在使用されているスタイルテーマの強調表示されたテキストと背景に適切な(コントラストとスタイルに適合する)色を得る方法です。子どもたちにApplicationWindowからSystemPalette { id: palette }を使用すると(たとえばpalette.highlightedText"white"で、palette.highlight"blue""darkblue")(わからない)のみデフォルトスタイルに適した色を与えます。それはスタイルのテーマでは醜い、デフォルトと異なるとは異なります。

もう一つの重要な観察は次のとおりです。私はルートApplicationWindowfont.pointSize: 17(または均等font: Qt.application.font)を設定した場合は、すべてのアイテムが新しいコンテキストを持っているそれらの人々のを除いて、適切にリサイズされています*Viewに、highlight:delegate:秒を言いますsourceComponent:Loaderに、ComponentRepeaterなどのデフォルトのプロパティ項目と、親のItemのコンテキストが失われたためにフォントの継承が壊れます。

私は手動で新しいコンテキストごとにApplicationWindow.window.fontを "継承"する必要があるようです。もしそうなら悲しいです。それは退屈です。 Repeater私はLabelをたくさん持ってRowLayoutを使用しています:Labelのそれぞれにfont: ApplicationWindow.window.fontを追加する必要があります。

+0

ところで異なるスタイルのテーマを試すには、1にすべての悪い設計上の決定を見つけるための機会を与えてくれます。合理的な範囲の 'font.pointSize'ですべての可能なスタイルを列挙するGUIのシーブのようなものです。 – Orient

答えて

0

オリエントが、私はそれが手遅れですけど、1も、このような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

関連する問題