QTextEditの行間隔を設定したいとします。QTextEditの行間隔を設定する
それは
QFontMetrics::lineSpacing();
しかし、それをどのように設定すると、その情報を取得するには問題ありませんか?
は、私はスタイルシートを試してみましたが、それはうまくいきませんでした:
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);
}
}
}
を、良い解決策は、非常に興味深いだろう。 – qwc