我想设置 QTextEdit 的行距。
获取这些信息没有问题
QFontMetrics::lineSpacing();
但是如何设置呢?
我尝试使用 StyleSheets,但没有奏效:
this->setStyleSheet("QTextEdit{ height: 200%; }");
或者
this->setStyleSheet("QTextEdit{ line-height: 200%; }");
部分解决方案:
好吧,我找到了一个解决方案——不是我想要的方式,但至少它很简单,而且它几乎给出了我想要的行为,足以证明我的概念。
在每条新行上都有一些行距。但是,如果您只是键入直到文本自动换行到新行,则这两行之间不会有行距。此 hack 仅适用于文本块,请参阅代码。
请记住,这是蛮力和丑陋的黑客攻击。但它为您漂亮的 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);
}
}
}