Qt中如何实现Qtextedit控件的内容实时同步到Qtextbrowser中?
QTextBrowser类继承自QTextEdit,但从运行结果也能看出,光标无法打入QTextBrowser框里,即QTextBrowser里面的内容并不能进行更改,但是相对于QTextEdit来讲,具有链接文本的作用。
这里我们试着实现一个简单的编辑、预览模型。
效果如下图:
首先将创建两个控件创建出来并设置它们的大小和位置:
QTextEdit *te=new QTextEdit(this);
te->resize(100,200);
QTextBrowser *tb=new QTextBrowser(this);
tb->resize(100,200);
tb->move(104,0);
然后使用信号和槽机制,当QTextEdit发出文本内容改变的信号时,QTextBrowser通过settext将QTextEdit的内容设置为,自己的文本内容:
connect(te,&QTextEdit::textChanged,[=](){
tb->setText(te->toPlainText());
});
这里使用lambda表达式做为响应文本内容改变的槽函数。
值得一提的是:QTextBrowser控件可以解析HTML代码。如:我们在QTextEdit中输入如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>我是标题1</h1>
</body>
</html>
便能得到这样的显示效果: