代码之家  ›  专栏  ›  技术社区  ›  jcuenod

如何使用qtextblock?

  •  7
  • jcuenod  · 技术社区  · 15 年前

    我对C++和QT完全陌生。

    我想填充一个 QTextEdit 对象与 QTextBlocks ,我该怎么做?

    例如 如果我有“鱼来了”这句话,我怎么把每个词都写进它自己的词里呢? QTextBlock 把那个块添加到 QTEX 还是我误解了 QTextblock 实际工作?

    3 回复  |  直到 9 年前
        1
  •  11
  •   NG_    9 年前

    QTextEdit 您可以通过 QString :

    QTextEdit myEdit("the fish are coming");
    

    它还允许您使用 QTextDocument ,其中包含文本块。 这个 qTrk文档 本身也可以接受 Q字符串 :

    QTextEdit myEdit;
    QTextDocument* myDocument = new QTextDocument("the fish are coming", &myEdit);
    myEdit.setDocument(myDocument);
    

    但是,“如果需要创建新的文本块,或者在检查文档内容时修改文档内容,请使用 QTextCursor 相反。” (Qt documentation) (注意,我添加了 QTextBlockFormat 行以明确块的位置。)

    QTextEdit myEdit;
    QTextDocument* myDocument = new QTextDocument(&myEdit);
    myEdit.setDocument(myDocument);
    QTextCursor* myCursor = new QTextCursor(myDocument);
    
    QTextBlockFormat format;
    format.setBackground(Qt::red);
    myCursor->setBlockFormat(format);
    
    myCursor->insertText("the ");
    
    format.setBackground(Qt::green);
    myCursor->insertBlock(format);
    myCursor->insertText("fish ");
    
    format.setBackground(Qt::yellow);
    myCursor->insertBlock(format);
    myCursor->insertText("are ");
    
    format.setBackground(Qt::red);
    myCursor->insertBlock(format);
    myCursor->insertText("coming!");
    
    format.setBackground(Qt::green);
    myCursor->insertBlock(format);
    myCursor->insertText(QString(%1 blocks").arg(myDocument->blockCount()));
    myEdit.show();
    

    看来我要付出很多努力。你能提供你觉得需要使用的其他信息吗 QTextBlock S?

        2
  •  1
  •   David Peterson Harvey    11 年前

    使用InsertText将它们保持在同一行,而不在中间使用InsertBlock。

    例如,当我尝试

    cursor.insertText("I will try ", textFormat);
    cursor.insertText("this for you.", textFormat);
    

    对你来说,这些词都出现在同一行。

    插入块插入段落。

        3
  •  0
  •   Liz Albin    15 年前

    你应该检查一下文件 here

    可以将字符串赋给qstring,然后将其添加到qtextedit,或者可以使用section()解析qstring,请参见 here