1

我试图在 QTextDocument 中仅绘制左边框。由于 afaik QTextFrame 不支持选择性边框,因此我尝试为文本框架分配纹理画笔。类似于以下内容 -

#include <QPainter>
#include <QTextFrameFormat>
#include <QTextCursor>
#include <QTextFrame>
#include <QTextEdit>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);

    QTextDocument doc;
    QPixmap map(1024, 1024);
    QPainter p;
    p.begin(&map);
    p.setBackground(QBrush(Qt::transparent));
    p.drawRect(QRect(0,0, 4, map.height()));
    p.end();

    QTextFrameFormat frameFormat;
    QBrush bruh(map);
    bruh.setColor(Qt::transparent);
    frameFormat.setBackground(bruh);
    auto cur = new QTextCursor(&doc);
    auto frame = cur->insertFrame(frameFormat);
    auto curf = new QTextCursor(frame);
    curf->insertText("Hello this is qt program!");

    QTextEdit e;
    e.setDocument(&doc);
    e.show();

    return a.exec();
}

但是即使背景设置为透明,这也会打印黑色背景(我需要一个只有左红色边框的透明背景)。
我不知道出了什么问题。此外,还有其他方法可以让 QTextFrame 只有左边框吗?
在此处输入图像描述

4

1 回答 1

1

尝试这个:

QTextDocument doc;
QPixmap map(1024, 1024);
map.fill(Qt::white);
QPainter p;
p.begin(&map);
p.fillRect(QRect(0,0, 4, map.height()),QBrush(Qt::red));
p.end();
于 2019-10-19T08:40:40.787 回答