在QTextEdit中设置行距

问题描述 投票:11回答:2

我想设置QTextEdit的行距。

通过]获取该信息没问题>

QFontMetrics::lineSpacing();

但是如何设置?

我尝试了StyleSheets,但是没有用:

this->setStyleSheet("QTextEdit{ height: 200%; }");

this->setStyleSheet("QTextEdit{ line-height: 200%; }");

部分解决方案:

嗯,我找到了一个解决方案-不是我想要的方法,但是至少它很简单,并且几乎提供了预期的行为,足以证明我的概念。

每行上都有一些行距。但是,如果您只是键入直到文本自动换行到新行,您在这两行之间就不会有行距。此技巧仅适用于文本块,请参见代码。

请记住,这是蛮力和丑陋的破解。但是它为您漂亮的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);
        }
    }
}

我想设置QTextEdit的行距。通过QFontMetrics :: lineSpacing();获得信息是没有问题的。但是如何设置呢?我尝试使用StyleSheets,但是没有用:this -...

c++ qt
2个回答
4
投票

QFontMetrics包含(按名称)来自字体文件的静态属性。大写字母“ C”的宽度等等。lineSpacing()使您单间距设计的自然距离是设计字体的人编码到字体本身中的距离。如果您实际上想更改that


0
投票

将块格式应用于整个文档而不是每一行。

© www.soinside.com 2019 - 2024. All rights reserved.