繁体   English   中英

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

[英]How to get QTextEdit's html tags without getting all of the html?

我有一个QTextEdit,它从一个名为m_text的变量中存储一些文本。 文本像这样存储在其中:

<ui><center>Info Plot</center><ui> <br> <table> <tr> <td> Name: </td> <td> 50A40 </td> </tr>等...

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

我通过使用setText(m_text)在QTextEdit上设置文本,将变量中的内容完全存储到编辑文本中。 我的问题是,我怎样才能找回确切的文本,也许还要添加一些用户(例如他们想稍作更改)? toPlainText()返回除html标记之外的所有内容,并且toHtml()返回包含大量我不需要或想要的东西的大型字符串(如果可能,我希望不必进行搜索)。

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

无论如何,我可以获取所有数据+放回标签的方式,就像从m_text设置方式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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM