日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Qt實現一個簡單的word文檔編輯器_C 語言

作者:Mr.codeee ? 更新時間: 2022-08-27 編程語言

1.先看效果圖

可以設置文字的屬性、文字顏色、字體類型。以下示例僅供參考,有的地方還是不完善。

2.需要用到的類

2.1字體選擇下拉框:QFontComboBox。

QFontComboBox是一個讓用戶選擇字體的組合框。組合框中填充了按字母順序排列的字體族名稱列表。

常用方法:

獲取當前的字體

QFont currentFont() const

還有一個信號,當字體發生改變時,發送信號。

void currentFontChanged(const QFont &font)

2.2顏色對話框:QColorDialog

常用方法:

獲取當前選擇的顏色

QColor currentColor() const

2.3QTextCharFormat

QTextCharFormat類為QTextDocument中的字符提供格式化信息。換句話說,我們要設置鼠標選中字體的屬性,就需要使用這個類。

本例子中使用的方法:

void setFont(const QFont &font) 設置字體
void setFontItalic(bool italic) 設置是否斜體
void setFontStrikeOut(bool strikeOut) 設置刪除線
void setFontUnderline(bool underline) 設置下劃線

3.源碼

為了方便,我定義了5個全局變量

bool isBold = false;    //是否粗體
bool isUnderLine = false; //是否下劃線
bool isDelLine = false; //是否刪除線
bool isLean = false; //是否斜體
 
QColor color(Qt::black); //字體顏色

設置斜體、粗體等按鈕可選中,因為默認是不可選中的,我們需要綁定可選中的信號。

    ui->btnBold->setCheckable(true);
    ui->btnDelLine->setCheckable(true);
    ui->btnLean->setCheckable(true);
    ui->btnUnderline->setCheckable(true);

綁定按鈕的信號

void?clicked(bool checked = false)

#include "WTextEdit.h"
#include "ui_WTextEdit.h"
#include <QColorDialog>
#include <QTextDocument>
#include <QTextCursor>
#include <QTextCharFormat>
#include <QFont>
#include <QBrush>
 
bool isBold = false;    //是否粗體
bool isUnderLine = false; //是否下劃線
bool isDelLine = false; //是否刪除線
bool isLean = false; //是否斜體
 
QColor color(Qt::black); //字體顏色
 
WTextEdit::WTextEdit(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::WTextEdit)
{
    ui->setupUi(this);
 
    ui->btnBold->setCheckable(true);
    ui->btnDelLine->setCheckable(true);
    ui->btnLean->setCheckable(true);
    ui->btnUnderline->setCheckable(true);
}
 
WTextEdit::~WTextEdit()
{
    delete ui;
}
 
 
void WTextEdit::on_btnBold_clicked(bool checked)
{
    isBold = checked;
    updateText();
}
 
void WTextEdit::on_btnLean_clicked(bool checked)
{
    isLean = checked;
    updateText();
}
 
void WTextEdit::on_btnUnderline_clicked(bool checked)
{
    isUnderLine = checked;
    updateText();
}
 
void WTextEdit::on_btnDelLine_clicked(bool checked)
{
    isDelLine = checked;
    updateText();
}
 
void WTextEdit::updateText()
{
    QFont font = ui->fontComboBox->currentFont();
    font.setBold(isBold);
    font.setPointSize(ui->lineEdit->text().toInt());
 
    QTextCharFormat format;
    format.setFont(font);
    format.setFontItalic(isLean);
    format.setFontStrikeOut(isDelLine);
    format.setFontUnderline(isUnderLine);
 
    QPen pen;
    pen.setColor(color);    //設置字體顏色
    format.setTextOutline(pen);
 
    ui->textEdit->textCursor().setCharFormat(format);
}
 
void WTextEdit::on_btnColor_clicked()
{
    QColorDialog dialog;
    dialog.exec();
 
 
    color = dialog.currentColor();
    updateText();
}
 
void WTextEdit::on_lineEdit_textChanged(const QString &arg1)
{
    updateText();
}
 
void WTextEdit::on_fontComboBox_currentFontChanged(const QFont &f)
{
    updateText();
}

原文鏈接:https://blog.csdn.net/wzz953200463/article/details/125608220

欄目分類
最近更新