LINUX.ORG.RU

[Qt] QString, QTextEdit и «\t»

 


0

0
int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     QString head;
     head = QObject::trUtf8("Хрень раз") + "\t" + QObject::trUtf8("хрень два");
     QTextEdit b(head);

     QString mainText;
     mainText = QString::number(3.1) + "\t" + QString::number(3.2);

     b.append(mainText);
     b.show();

     return app.exec();
 }

В результате в QTextEdit первая строка(head) без табов, в место табов пробелы. Вторая строка(mainText) как и ожидается с табами.

В чём проблема?

Ответ на: комментарий от summatus

Смущает только что конструктор понимает текст как html, а остальные методы как plain-text, пока не сделаешь toHtml();

Очень странно.

golodranez ★★★★
() автор топика
Ответ на: комментарий от golodranez

>остальные методы как plain-text

append() и paste()? Да не так уж и странно. Почему append, по умолчанию, должен интерпретировать всё в html? Это лишние тормоза. Если так надо, сам напиши три строчки:

void appendHtml( const QString& html ) {
    QTextCursor cur( document() );
    cur.movePosition( QTextCursor::End );
    cur.insertHtml( html );
}

Конструктор ждёт html, т.к. сам класс в отличие от QPlainTextEdit html-based. С paste тоже самое - его задача предельно быстро воткнуть кусок буфера. Нужно вставлять html или ещё что-то - переопределяй специальную ф-цию

void insertFromMimeData ( const QMimeData * source )

а в ней или source->hasHtml(), или хитро анализируй содержимое text() в поисках html-тэгов.

summatus
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.