1、界面设计
2、代码
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_test2_4.h"
#include<QLabel>
#include<QSpinBox>
#include<QFontComboBox>
#include<QProgressBar>
#include<qDebug>
#include<QTextCharFormat>
#include<QFile>
class test2_4 : public QMainWindow
{
Q_OBJECT
public:
test2_4(QWidget *parent = Q_NULLPTR);
private:
Ui::test2_4Class ui;
void InitUI();
void InitConnect();
QSpinBox *sp;
QFontComboBox *cp;
QLabel *pl;
QProgressBar *pg;
QTextCharFormat tc;
bool ital_2;
bool bl_2;
bool ul_2;
private slots:
void on_open();
void on_new_2();
void on_cut();
void on_copy();
void on_paste();
void on_ital();
void on_bl();
void on_ul();
void on_sp();
void on_Initsp();
void on_cp(QFont a);
};
#include "test2_4.h"
test2_4::test2_4(QWidget *parent)
: QMainWindow(parent),
ital_2(true),
bl_2(true),
ul_2(true)
{
ui.setupUi(this);
InitUI();
InitConnect();
}
void test2_4::InitUI()
{
ui.menuBar->addMenu(QStringLiteral("文件"));
ui.menuBar->addMenu(QStringLiteral("编辑"));
ui.menuBar->addMenu(QStringLiteral("格式"));
QLabel *label1, *label2, *label3;
sp = new QSpinBox;
cp = new QFontComboBox;
label1 = new QLabel(QStringLiteral("字体"));
label2 = new QLabel(QStringLiteral("字体大小"));
label3 = new QLabel(QStringLiteral("当前文件:"));
QFont f;
f.setPointSize(12);
label1->setFont(f);
label2->setFont(f);
ui.mainToolBar->addWidget(label1);//放置指针才能不报错
ui.mainToolBar->addWidget(cp);
ui.mainToolBar->addWidget(label2);
ui.mainToolBar->addWidget(sp);
ui.statusBar->addWidget(label3);
pg = new QProgressBar;
ui.statusBar->addWidget(pg);
setCentralWidget(ui.plainTextEdit);
//QFont f=ui.plainTextEdit->font();
//int i=f.pointSize();
//sp->setValue(i);
tc.setFontPointSize(12);
}
void test2_4::InitConnect()
{
connect(ui.open, SIGNAL(triggered()), this, SLOT(on_open()));
connect(ui.new_2, SIGNAL(triggered()), this, SLOT(on_new_2()));
connect(ui.cut, SIGNAL(triggered()), this, SLOT(on_cut()));
connect(ui.copy, SIGNAL(triggered()), this, SLOT(on_copy()));
connect(ui.paste, SIGNAL(triggered()), this, SLOT(on_paste()));
connect(ui.ital, SIGNAL(triggered()), this, SLOT(on_ital()));
connect(ui.bl, SIGNAL(triggered()), this, SLOT(on_bl()));
connect(ui.ul, SIGNAL(triggered()), this, SLOT(on_ul()));
connect(sp, SIGNAL(valueChanged(int)), this, SLOT(on_sp()));
connect(ui.plainTextEdit, SIGNAL(cursorPositionChanged()), this, SLOT(on_Initsp()));
connect(cp, SIGNAL(currentFontChanged(QFont)), this, SLOT(on_cp(QFont)));
}
void test2_4::on_open()
{
QFileDialog file;
QString path = file.getOpenFileName(this,QStringLiteral("打开文件"),"/test", tr("txt (*.txt)"));
QFile fl(path);
fl.open(QIODevice::ReadOnly);
QByteArray by = fl.readAll();
ui.plainTextEdit->setPlainText(QString(by));
fl.close();
}
void test2_4::on_new_2()
{
}
void test2_4::on_cut()
{
ui.plainTextEdit->cut();
}
void test2_4::on_copy()
{
ui.plainTextEdit->copy();
}
void test2_4::on_paste()
{
ui.plainTextEdit->paste();
}
void test2_4::on_ital()
{
tc.setFontItalic(ital_2);
ui.plainTextEdit->setCurrentCharFormat(tc);
if (ital_2)
{
ital_2 = false;
}
else
{
ital_2 = true;
}
}
void test2_4::on_bl()
{
QFont f;
QTextCharFormat tc1 = ui.plainTextEdit->currentCharFormat();
f = tc1.font();
f.setBold(bl_2);
tc.setFont(f);
ui.plainTextEdit->setCurrentCharFormat(tc);
if (bl_2)
{
bl_2 = false;
}
else
{
bl_2 = true;
}
}
void test2_4::on_ul()
{
tc.setFontUnderline(ul_2);
ui.plainTextEdit->setCurrentCharFormat(tc);
if (ul_2)
{
ul_2 = false;
}
else
{
ul_2 = true;
}
}
void test2_4::on_sp()
{
int i = sp->value();
//ui.plainTextEdit->setFont(f);字体会全部发生变化
tc.setFontPointSize(i);
ui.plainTextEdit->setCurrentCharFormat(tc);
}
void test2_4::on_Initsp()
{
QTextCharFormat tc1= ui.plainTextEdit->currentCharFormat();
QFont f = tc1.font();
int i = f.pointSize();
sp->setValue(i);
}
void test2_4::on_cp(QFont a)
{
QTextCharFormat tc1 = ui.plainTextEdit->currentCharFormat();
QFont f = tc1.font();
a.setPointSize(f.pointSize());
tc.setFont(a);
ui.plainTextEdit->setCurrentCharFormat(tc);
}
3、运行结果