QTextEditの行間隔を設定したい。
その情報を取得することは問題ありません
QFontMetrics::lineSpacing();
しかし、それをどのように設定するのですか?
StyleSheetsで試しましたが、うまくいきませんでした。
this->setStyleSheet("QTextEdit{ height: 200%; }");
また
this->setStyleSheet("QTextEdit{ line-height: 200%; }");
部分的な解決策:
さて、私は解決策を見つけました-私が望んでいた方法ではありませんが、少なくともそれは単純であり、概念実証に十分な、ほぼ意図した動作を提供します。
すべての新しい行には、いくつかの行間隔があります。ただし、テキストが自動的に新しい行に折り返されるまで入力するだけでは、この2行の間に行間隔はありません。このハックはテキストブロックでのみ機能します。コードを参照してください。
それはブルートフォースと醜いハックであることを覚えておいてください。しかし、それはあなたの美しいQTextEditにある種の行間隔を提供します。テキストが変わるたびにそれを呼び出します。
void setLineSpacing(int lineSpacing) {
int lineCount = 0;
for (QTextBlock block = this->document()->begin(); block.isValid();
block = block.next(), ++lineCount) {
QTextCursor tc = QTextCursor(block);
QTextBlockFormat fmt = block.blockFormat();
if (fmt.topMargin() != lineSpacing
|| fmt.bottomMargin() != lineSpacing) {
fmt.setTopMargin(lineSpacing);
//fmt.setBottomMargin(lineSpacing);
tc.setBlockFormat(fmt);
}
}
}