VS+QT斜体、粗体、下划线的实现

  1. 需要创建一个GUI项目,并在UI设计师里面,将菜单栏和任务栏设计好。由于VS+QT没有“go to slots”,所以需要手动添加槽函数。界面设计效果如下图所示:(中间为textEdit)

  1. 在类里面添加如下代码:(完整代码)

#include "FileEdit.h"

FileEdit::FileEdit(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    initUI();
}

void FileEdit::initUI()
{
    m_Bd = false;
    m_Ita = false;
    m_Udl = false;
    connect(ui.actioncuti, SIGNAL(triggered()), this, SLOT(Bd()));
    connect(ui.action_xieti, SIGNAL(triggered()), this, SLOT(Ita()));
    connect(ui.actionxiahuaxian, SIGNAL(triggered()), this, SLOT(Udl()));
    setCentralWidget(ui.textEdit);
    setWindowIcon(QIcon(":/picture/Resources/title.png"));
}

void FileEdit::Ita()
{
    QTextCharFormat fmt;
    fmt = ui.textEdit->currentCharFormat();
    if (m_Ita)
        m_Ita = false;
    else
        m_Ita = true;
    fmt.setFontItalic(m_Ita);
    ui.textEdit->mergeCurrentCharFormat(fmt);
}

void FileEdit::Udl()
{
    QTextCharFormat fmt;
    fmt = ui.textEdit->currentCharFormat();
    if (m_Udl)
    {
        m_Udl = false;
    }
    else
    {
        m_Udl = true;
    }
    fmt.setFontUnderline(m_Udl);
    ui.textEdit->mergeCurrentCharFormat(fmt);
}

void FileEdit::Bd()
{
    QTextCharFormat fmt;
    fmt = ui.textEdit->currentCharFormat();
    if (m_Bd)
    {
        m_Bd = false;
        fmt.setFontWeight(QFont::Normal);
    }
    else
    {
        m_Bd = true;
        fmt.setFontWeight(QFont::Bold);
    }    
    ui.textEdit->mergeCurrentCharFormat(fmt);
}
#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_FileEdit.h"

class FileEdit : public QMainWindow
{
    Q_OBJECT

public:
    FileEdit(QWidget *parent = Q_NULLPTR);

private:
    Ui::FileEditClass ui;

private:
    void initUI();
    bool m_Bd;
    bool m_Ita;
    bool m_Udl;

    private slots:
    void Bd();
    void Ita();
    void Udl();
};
  1. 在UI设计师里,将复制、粘贴、剪切三个功能通过“信号编辑器”进行槽函数设计,具体如下:

  1. 运行界面如下:


版权声明:本文为Learning_Well原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。