Граница перед текстом в QTextDocument - PullRequest
0 голосов
/ 14 октября 2019

Я хочу иметь только левую рамку вокруг моего текста в QTextDocument
Я думаю, что для этого потребуется

<div style='
  border-left: 6px solid red;
  background-color: lightgrey;
'> Hello World </div>

, но допустим, у меня есть этот код qt

#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QTextEdit>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QWidget *widget = new QWidget();
    auto l = new QHBoxLayout(widget);
    widget->setLayout(l);
    QTextEdit *e = new QTextEdit(widget), *t = new QTextEdit(widget);
    l->addWidget(e);
    l->addWidget(t);

    QObject::connect(e, &QTextEdit::textChanged, [=]() {
        t->setHtml(e->toPlainText());
    });

    widget->show();
}

Теперь, если ввести HTML, я получил этот вывод

img

но правильный и требуемый вывод должен быть - enter image description here

Я хочу вывод выше, что-то мне не хватает?

1 Ответ

1 голос
/ 15 октября 2019

К сожалению, форматированный текст Qt в QTextDocument не поддерживает границы ни для чего, кроме таблиц. И даже тогда это все границы сразу, а не отдельные стороны. https://doc.qt.io/qt-5/richtext-html-subset.html#css-properties

ОБНОВЛЕНИЕ : Ну, это напоминает мне о написании HTML для MSIE еще в 1996 году, но эй (почти) всегда есть способ ... (единственный CSS здесь на самом деленеобязательно, изображение «требуемый вывод» не имеет отступа:).

enter image description here

<!-- with width=100% the table extends all the way to the right margin -->
<table cellspacing=0 width='100%'>
<tr>
  <td width=6 bgcolor='red'/>
  <td bgcolor='lightgrey' 
      style='padding: 0 4px;'
    >Hello World</td>
</tr>
</table>
...