首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTextDocument使用多个空格

QTextDocument使用多个空格
EN

Stack Overflow用户
提问于 2010-06-08 02:10:00
回答 2查看 2.9K关注 0票数 2

有一个Qt/C++代码:

代码语言:javascript
复制
#include <QtCore/QCoreApplication>
#include <QtGui/QTextDocument>
#include <QByteArray>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QTextDocument *doc = new QTextDocument();

    qDebug() << " === Document was: === ";
    qDebug() << doc->toHtml(QByteArray());

    doc->setHtml("<p>THIS       IS      SPARTA</p>");

    qDebug() << " === Document now: === ";
    qDebug() << doc->toHtml(QByteArray());

    return a.exec();
}

它输出:

代码语言:javascript
复制
 === Document was: ===  
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Helvetica'; font-size:12pt; font-weight:400; font-style:normal;">
<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
<tr>
<td style="border: none;">
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html>" 
 === Document now: ===  
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Helvetica'; font-size:12pt; font-weight:400; font-style:normal;">
<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
<tr>
<td style="border: none;">
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">THIS IS SPARTA</p></td></tr></table></body></html>" 

正如我所看到的,在QTextDocument中有一些类似默认CSS的东西:

代码语言:javascript
复制
<style type="text/css">p, li {white-space: pre-wrap;}</style>

但是,当我用p标签和多个空格设置HTML时,它会删除空格。问题是--为什么?另一个问题是--为什么要在p标签中添加边距?

附言:如果我添加一行,它就可以正常工作

代码语言:javascript
复制
doc->setDefaultStyleSheet("p, li { white-space: pre-wrap; }");

在执行setHtml之前,它不会删除多个空格。但是这个style-tag是什么呢?它不是默认的样式表吗?为什么Qt会忽略它?

谢谢你的回答。

EN

回答 2

Stack Overflow用户

发布于 2010-06-11 02:13:51

此行为来自html,html只是忽略标签中的多个空格。

尝试使用表示空格的特殊代码:&nbsp;

代码语言:javascript
复制
#include <QtCore/QCoreApplication>
#include <QtGui/QTextDocument>
#include <QByteArray>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QTextDocument *doc = new QTextDocument();
    qDebug() << " === Document was: === ";
    qDebug() << doc->toHtml(QByteArray());

    QByteArray myhtml ="<p>THIS       IS      SPARTA</p>";

    doc->setHtml(myhtml.replace(" ","&nbsp;"));

    qDebug() << " === Document now: === ";
    qDebug() << doc->toHtml(QByteArray());

    return a.exec();
}
票数 4
EN

Stack Overflow用户

发布于 2010-09-17 05:53:05

文档会告诉你Rich Text对象中支持哪些CSS标签--空格:至少在我的Qt4.7文档中应该支持预换行。也许你应该在bug追踪器中提出一个bug?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2991973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档