有不对的地方,希望大佬指正
1.QTextEdit
(1)setPlainText和setHtml的区别
QTextEdit*text;
text=new QTextEdit(this);
text->move(100,100);
text->setPlaceholderText("请输入你的姓名");
//setPlainText会以覆盖之前文本的方式输入,PlainText是普通文本。和下面的html文本做一个区分
text->setPlainText("替换掉其他的文本");
//inserPlainText,在光标的位置的插入文本,设计一个信号函数来实现,OnclickedText中是
auto btn=new QPushButton("插入文本",this);
connect(btn,&QPushButton::clicked,this,&Widget::OnclickedText);
就像图中所示
//获取文本,可以做一个输出
qInfo()<<text->toPlainText();
//现在我们来看setHtml,这需要一些html的知识。
text->setHtml("<h1>请输入你的姓名</h1>");
//<h1></h1>一个标题
明显和上面的PlainText是不一样的,字体不一样
text->toHtml()函数做的输出html代码,我们可以看一下.输出的是html文件代码
但因为一些不知名的原因,文本内容qt的输出器没有直接写出来。那些问号的字符就是我们输入的文本
在txt中复制输出器输出的html文件代码,后缀改成html我们会发现。
就是一个静态网页。所以QTextEdit是支持html语言的
//还有一个就是Qmarkdown
text->setMarkdown("# Qt\n## 控件\n## 槽函数\n+ 信号函数");
Markdown也可以在QTextEdit中使用,看一下效果.
最后提一下,setText()函数可以自动识别文本语言类型,但是没办法识别markdown
2.QTextcurcor
QtextEdit当中光标的应用是很多的,可以在光标处插入字,图片,列表,一段文字,一个框架
text=new QTextEdit(this);
//获取文本光标
QTextCursor cursor=text->textCursor();
//设置文本字符格式 ,format 格式
QTextCharFormat cc;
//设置字体下划线, font 字体
cc.setFontUnderline(true);
//设置字体下划线的颜色
cc.setUnderlineColor(Qt::red);
//设置字体前景颜色Foreground 前景
cc.setForeground(Qt::blue );
cursor.insertText("欢迎",cc);
记住这个模式,Format是格式的意思,后面的内容都差不多是这样设置的,先通过Format设置插入的具体格式,再进行插入。
//设置图片的格式
QTextImageFormat tt;
//添加照片
tt.setName("11.png");
//用光标插入图片 FloatLeft左浮动
cursor.insertImage(tt,QTextFrameFormat::Position::FloatLeft);
//cursor.insertImage(tt,QTextFrameFormat::Position::FloatRight);
//cursor.insertImage(tt,QTextFrameFormat::Position::InFlow);
//直接插入图片也是可以的
//cursor.insertImage("11.png");
//插入一段文字
cursor.insertFragment(QTextDocumentFragment::fromHtml("<a href='https://www.baidu.com'></a>"));
//设置一个按钮用来展示下面的列表,框架的添加
auto btn=new QPushButton("run",this);
btn->move(400,0);
//点击一下就会出现表格格式
connect(btn,&QPushButton::clicked,this,&Widget::clicked);
来看列表的插入
QTextCursor cuir= text->textCursor();
QTextListFormat ttt;
//自定义列表的格式,prefix前缀 suffix后缀
ttt.setNumberPrefix("<");
ttt.setNumberSuffix(">");
//设置列表的样式,ListDisc小圆点格式
//ttt.setStyle(QTextListFormat::ListDisc);
//数字模式
ttt.setStyle(QTextListFormat::ListDecimal);
//也可以直接在插入时规定格式
//cuir.insertList(QTextListFormat::ListDisc);
cuir.insertList(ttt);
运行出来就是我们想要的列表结果
下面是表格的插入,依旧是老套路
文本块的插入,也就是插入一段文字,因为下一段缩进的设置,所以光标的位置很靠后
text->setFocus();
//插入文本块,就是重新开始一段
QTextBlockFormat tbf;
//设置缩进,即使是1也是很大的
tbf.setIndent(1);
//老样子
cuir.insertBlock(tbf);
最后是框架的设置,其实框架就相当于插入了一个小的QTextEdit,这里我们把它设为红色
QTextFrameFormat tff;
//设置框架内的背景颜色
tff.setBackground(Qt::red);
cuir.insertFrame(tff);
Qt有很多很多函数,大家要结合帮助文档来使用这些函数.