Qt富文本 - 插入表格/列表/图片

插入表格/列表/图片

  • 新建桌面应用程序testRichText,基类QMainWindow,勾选创建界面文件,其他选择默认。
  • 编辑mainwindow.cpp构造函数

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {class MainWindow;}

class MainWindow : public QMainWindow{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void insertTable();     //插入表格
    void insertList();      //插入列表
    void insertImage();     //插入图片
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTextFrame>
#include <QFileDialog>
#include <QImageReader>

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
    ui->setupUi(this);

    //获取文档对象
    QTextDocument * docuMent = ui->textEdit->document();

    //获取文档 根框架
    QTextFrame *rootFromat = docuMent->rootFrame();

    //文档框架格式
    QTextFrameFormat format;
    format.setBorderBrush(Qt::red);     //边框颜色设置为红色
    format.setBorder(5);                //边框宽度

    //设置根框架格式
    rootFromat->setFrameFormat(format);

    //添加 表格按钮到工具栏
    QAction *tableAction = new QAction("表格", this);
    connect(tableAction, &QAction::triggered,
            this, &MainWindow::insertTable);
    ui->mainToolBar->addAction(tableAction);

    //添加 列表按钮到工具栏
    QAction *listAction = new QAction("列表", this);
    connect(listAction, &QAction::triggered,
            this, &MainWindow::insertList);
    ui->mainToolBar->addAction(listAction);

    //添加 图片按钮到工具栏
    QAction *imageAction = new QAction("图片", this);
    connect(imageAction, &QAction::triggered,
            this, &MainWindow::insertImage);
    ui->mainToolBar->addAction(imageAction);
}

MainWindow::~MainWindow(){
    delete ui;
}

void MainWindow::insertTable(){
    //获取光标位置
    QTextCursor cursor = ui->textEdit->textCursor();
    QTextTableFormat format;    	//表格格式
    format.setCellSpacing(3);   	//设置表格外边白
    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 fileName = QFileDialog::getOpenFileName(this,
                                 "选择图片",
                                 ".",
                                 "JPEG(*.jpg *.jpeg);;"
                                 "GIF(*.gif);;"
                                 "PNG(*.png)");
    QUrl url(QString("file:%1").arg(fileName));
    QImage image = QImageReader(fileName).read();

    //在文档中添加图片
    ui->textEdit->document()->addResource(QTextDocument::ImageResource,
                                          url, QVariant(image));
    QTextCursor cursor = ui->textEdit->textCursor();

    QTextImageFormat imgFormat;
    imgFormat.setWidth(image.width());      //设置图片宽
    imgFormat.setHeight(image.height());    //设置图片高
    imgFormat.setName(url.toString());      //获取文件路径
    cursor.insertImage(image);              //在光标处插入图片
}

运行效果:

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:像素格子 设计师:CSDN官方博客 返回首页
评论

打赏作者

骆驼胡杨

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值