我试图在 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 只有左边框吗?