富文本之表格、列表、图片

一、向创建的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);

创建三个部件与其自己定义的槽函数之间进行连接,达到点击触发实现。

程序效果:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值