Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QTextDocument占用多个空格_C++_Qt_Qt4_Qtextdocument - Fatal编程技术网

C++ QTextDocument占用多个空格

C++ QTextDocument占用多个空格,c++,qt,qt4,qtextdocument,C++,Qt,Qt4,Qtextdocument,有一个Qt/C++代码: #include <QtCore/QCoreApplication> #include <QtGui/QTextDocument> #include <QByteArray> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QTextDocument *doc = new QTextD

有一个Qt/C++代码:

#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();
}
在执行setHtml之前-它不会删除多个空格。但是这个样式标签是什么呢?这不是默认的样式表吗?为什么Qt忽略了它


感谢您的回答。

此行为来自html,html只需忽略标记中的多个空格即可

尝试将特殊代码用于空格:

#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();
}
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
qcorea应用程序(argc、argv);
QTextDocument*doc=新的QTextDocument();
qDebug()setHtml(myhtml.replace(“,”);

qDebug()文档告诉您在富文本对象中支持哪些CSS标记-空白:应该支持预包装,至少在我的Qt 4.7文档中是这样。也许您应该在错误跟踪器中提出一个错误?

我知道,但是对于和
  • 标记,有一个带有“空白:预包装”的CSS,所以不能删除空白。这是正确的这就是问题所在!:(是的,它是受支持的。当我将它设置为默认样式表时,它可以很好地工作。问题是它忽略了它自己的默认CSS。也许有人应该填写错误报告。我只是不知道,Qt是否应该使用它(我的意思是,它是错误还是功能;)就我个人而言,我会报告它,看看正确的行为应该是什么。也许它像一个doc bug一样简单,或者它是一个真正的bug。你可以尝试挖掘源代码并找出:-)
    <style type="text/css">p, li {white-space: pre-wrap;}</style>
    
    doc->setDefaultStyleSheet("p, li { white-space: pre-wrap; }");
    
    #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();
    }