QT+VS 简易文本编辑器

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、运行结果

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

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值