一、向创建的mianWindows.h添加槽函数
private slots:
void insertTable();//插入表格
void insertList();//插入链表
void insertImage();//插入图片
函数实现:
void MainWindow::insertTable()
{
//QTextDocument* document=ui->textEdit->document();//返回当前编辑区的文本对象
QTextCursor cursor=ui->textEdit->textCursor();
QTextTableFormat format;//定义一个表格格式对象
format.setCellSpacing(2);//设置外边距离
format.setCellPadding(10);//设置表格内边距
cursor.insertTable(3,3,format);//创建一个自己定义的3行3列表格样式
}
void MainWindow::insertList()
{
QTextListFormat format;
format.setStyle(QTextListFormat::ListDecimal);//链表格式设置为数字链表形式
ui->textEdit->textCursor().insertList(format);//将文本链表格式穿进去设置
}
void MainWindow::insertImage()
{
QString filepath=QFileDialog::getOpenFileName(this,
"选择图片",
".",
"JPGE(*.jpg *jpeg);;"
"GIF(*.gif);;"
"PNG(*.png)");
QUrl url(QString("file:://%1").arg(filepath));
QImage image=QImageReader(filepath).read();
QTextDocument* document=ui->textEdit->document();
//文当添加图片资源
document->addResource(QTextDocument::ImageResource,url,QVariant(image));
QTextCursor cursor=ui->textEdit->textCursor();
QTextImageFormat imageFormat;
imageFormat.setWidth(image.width());
imageFormat.setWidth(image.height());
imageFormat.setName(url.toString());
cursor.insertImage(imageFormat);
}
insertTable函数首先定义一个光标,获取当前光标的文本信息。在定义一个表格格式对象,format设置外边距离和内边距。再利用insertTable光标对象函数,实现自定义的格式设置,第一第二个参数是行和列,第三个参数是格式。
insertList函数则是定义一个链表格式对象,在利用style函数设置格式为数字链表格式之后,在接着调用textCusor函数获取光标信息,在调用insertList函数实现真正的设置文本编辑区的链表格式。
insertImage函数则是调用文件框函数获取文件的路径名字,再利用Qurl定义一个对象,将文件名字转成编码形式传递。
之后定义一个QImage对象利用QImageReader函数读取图片。之后再利用获取的文本对象document添加资源。之后的操作就是设置图片格式了。
mianWindows的构造函数添加代码:
//添加表格、列表、添加图片Action
QAction *action_textTable=new QAction("表格",this);
QAction *action_textList=new QAction("链表",this);
QAction *action_textImage=new QAction("图片",this);
connect(action_textTable,&QAction::triggered,this,&MainWindow::insertTable);
connect(action_textList,&QAction::triggered,this,&MainWindow::insertList);
connect(action_textImage,&QAction::triggered,this,&MainWindow::insertImage);
//工具栏添加按钮
ui->mainToolBar->addAction(action_textTable);
ui->mainToolBar->addAction(action_textList);
ui->mainToolBar->addAction(action_textImage);
创建三个部件与其自己定义的槽函数之间进行连接,达到点击触发实现。
程序效果: