我想设置QTextEdit的行间距.
获取该信息没有问题
QFontMetrics::lineSpacing();
Run Code Online (Sandbox Code Playgroud)
但是如何设定呢?
我尝试使用StyleSheets,但这不起作用:
this->setStyleSheet("QTextEdit{ height: 200%; }");
Run Code Online (Sandbox Code Playgroud)
要么
this->setStyleSheet("QTextEdit{ line-height: 200%; }");
Run Code Online (Sandbox Code Playgroud)
部分解决方案:
好吧,我找到了一个解决方案 - 不是我想要的方式,但至少它很简单,它几乎给出了我的预期行为,足以证明我的概念.
在每一个新行都有一些行间距.但是,如果您只是键入文本自动换行到新行,那么这两行之间就不会有行间距.这个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);
}
}
}
Run Code Online (Sandbox Code Playgroud)