html - 如何在不获取所有 html 的情况下获取 TextEdit html 标签?

标签 html c++ qt

我有一个 QTextEdit,我正在从一个名为 m_text 的变量中存储一些文本。文本存储在那里:

<ui><center>信息图</center><ui> <br> <table> <tr> <td> 名称:</td> <td > 50A40 </td> </tr> 等...

无论如何,这就是存储在 m_text 中的内容,它本质上是我需要的文本加上一些 html 以使其以我想要的方式显示,使用表格、一些下划线等。

我使用 setText(m_text) 在 QTextEdit 上设置文本,将变量中的内容准确存储到编辑文本中。我的问题是,我怎样才能得到准确的文本,也许添加一些用户(比如他们想稍微改变一下)? toPlainText() 返回除 html 标签之外的所有内容,而 toHtml() 返回一个巨大的字符串,其中包含大量我不需要或不想要的东西(如果可能的话,我希望不必搜索)。

我已经使用这些基本结构标记(如表)作为模板来编写我的整个代码,以获取某些信息并更改其他信息位,因此我想保持我已经完成的方式,如果我可以。

无论如何,我是否可以获取所有数据 + 我放入的标签,就像从 m_text 中设置的一样?

编辑:

#include <QDialog>


class plotInfoDialog : public QDialog
{
public:
    plotInfoDialog();
    void setQTextEdit();
    void getFreeTextEditText();

 public slots:
    void editChange();

 private:
    QString m_text;

 };

 plotInfoDialog::plotInfoDialog() {

    m_ui = new Ui::plotInfoDialog();
    m_ui->setupUi(this);
    this->show();
    m_text = "<u> <center>Plot Info</center> </u> <br><table><tr><td>Name: </td><td> #BASENAME#</td></tr><tr><td>Date: </td><td>#DATE# </td></tr><tr><td>Time: </td><td>#TIME# </td></tr><tr><td>Radar: </td><td>#RADAR#</td></tr><tr><td>Polarization: </td><td> #P#</td></tr><tr><td>Range: </td><td>#RANGE# </td></tr><tr><td>Elevation: </td><td> #ELEV# </td></tr></table>";
    setQTextEdit();
    connect(m_ui->FreeTextEdit->document(), SIGNAL(contentsChange(int,int,int)), this, SLOT(editChange(int,int,int)));

}

void plotInfoDialog::setQTextEdit() {

    m_ui->FreeTextEdit->setText(m_text);
}

void plotInfoDialog::editChange(int pos, int del, int add)
{
    //update m_text with changes in FreeTextEdit here
}

void plotInfoDialog::getFreeTextEditText() {
    m_text = //get text from FreeTextEdit here
}

最佳答案

实际上,当您使用 setText() 和使用 toPlainText() 询问您的文本时,返回的字符串会保留您的 HTML 标签。

但在您的情况下,QTextEdit 中的某些字符串被转换为 HTML。因此,从 toPlainText() 返回的字符串缺少所有 HTML 标记。查找 QTextEdit 的所有引用,并查看发生 HTML 转换的任何地方。

备选方案是:

使用 QPlainTextEdit,如果您根本不需要 HTML,我的意思是您的标签将得到很好的保留。

按照下面的说明尝试。

设置文本

QPlainTextEdit *textEdit = new QPlainTextEdit();
QString m_text = "<ui><center>Info Plot</center><ui> <br> <table> <tr> <td> Name: </td> <td> 50A40 </td> </tr>";
textEdit->document()->setPlainText(m_text);

获取文本

m_text = textEdit->toPlainText();

关于html - 如何在不获取所有 html 的情况下获取 TextEdit html 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47019184/

相关文章:

c++ - move 语义 : how best to understand/use them

android - 使用 Qt for Android 在 Android 中显示网页

c++ - 字符转QString

javascript - Angular JS : I have empty page after success response from server

python - 如何从列表中删除错误的URL?

html - div位置后自动高度

c# - 将大量数据从非托管 C++ 应用程序发送到托管 C#

c++ - 在设置了断点的 Windows 上分配、解除分配和内存管理

c++ - 如何在 C++ 和 matlab 进程之间放置共享内存?

html - 如何在网格中设置一行的自定义高度?