#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include <QFileDialog>
#include <QTextStream>
#include <QFontDialog>
#include <QTextCharFormat>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
iniUI();
iniSignalSlots();//信号与槽关联
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::iniUI()
{
//状态栏添加标签
fLabCurFile =new QLabel;//新建标签,命名为fLabCurFile
fLabCurFile->setMaximumWidth(150);//设置标签宽度为150mm
fLabCurFile->setText("当前文件");//设置标签的文本:当前文件
ui->statusbar->addWidget(fLabCurFile);//将fLabCurFile添加到状态栏
//状态栏添加进度条
progressBar1 =new QProgressBar;//新建进度条,命名为progressBar1
progressBar1->setMaximumWidth(200);//设置进度条宽度为200mm
progressBar1->setMaximum(5);//设置进度条最小为5
progressBar1->setMaximum(50);//设置进度条最大为50
progressBar1->setValue(ui->txtEdit->font().pointSize());//初始值
ui->statusbar->addWidget(progressBar1);//将progressBar1添加到状态栏
//工具栏添加调节大小组件
spinFontSize =new QSpinBox;//新建调节大小组件,文字大小
spinFontSize->setMinimum(5);//设置最小为5
spinFontSize->setMaximum(50);//设置最大为5
spinFontSize->setValue(ui->txtEdit->font().pointSize());//初始值
spinFontSize->setMaximumWidth(50);//组件宽度为50mm
ui->toolBar->addWidget(new QLabel("字体大小"));//添加一个标签,文本为字体大小
ui->toolBar->addWidget(spinFontSize);//将spinFontSize添加到工具栏
//工具栏添加选项
ui->toolBar->addSeparator();//分割条
ui->toolBar->addWidget(new QLabel("字体"));//添加一个标签,文本为字体
comboFont =new QFontComboBox;//新建一个选项comboFont
comboFont->setMinimumWidth(150);//最小宽度为150mm
ui->toolBar->addWidget(comboFont);//将comboFont添加到工具栏
setCentralWidget(ui->txtEdit); //将txtEdit设置为中心组件,自动填充整个工作区
}
void MainWindow::updateCurFile(QString aFile)
{
//更新当前文件名,并更新状态栏提示
fCurFileName=aFile;
fLabCurFile->setText(QString::fromLocal8Bit("当前文件:")+fCurFileName);
}
void MainWindow::iniSignalSlots()
{
//信号与槽的关联,当函数带有参数时,必须写明参数的类型
connect(spinFontSize,SIGNAL(valueChanged(int)),
this,SLOT(on_spinBoxFontSize_valueChanged(int)));
connect(comboFont,SIGNAL(currentIndexChanged(const QString &)),
this,SLOT(on_comboFont_currentIndexChanged(const QString &)));
}
void MainWindow::on_actFontBold_triggered(bool checked)
{
QTextCharFormat fmt;//格式
fmt=ui->txtEdit->currentCharFormat();//获取当前选择文字的格式
if (checked)// 相当于调用ui->actFontBold->isChecked();读取Action的check状态
fmt.setFontWeight(QFont::Bold);
else
fmt.setFontWeight(QFont::Normal);
ui->txtEdit->mergeCurrentCharFormat(fmt);
}
void MainWindow::on_actFontItalic_triggered(bool checked)
{
QTextCharFormat fmt;//格式
fmt=ui->txtEdit->currentCharFormat();//获取当前选择文字的格式
if (checked)// 相当于调用ui->actFontBold->isChecked();读取Action的check状态
fmt.setFontWeight(QFont::Bold);
else
fmt.setFontWeight(QFont::Normal);
ui->txtEdit->mergeCurrentCharFormat(fmt);
}
void MainWindow::on_actFontUnder_triggered(bool checked)
{
QTextCharFormat fmt;//格式
fmt=ui->txtEdit->currentCharFormat();//获取当前选择文字的格式
if (checked)// 相当于调用ui->actFontBold->isChecked();读取Action的check状态
fmt.setFontWeight(QFont::Bold);
else
fmt.setFontWeight(QFont::Normal);
ui->txtEdit->mergeCurrentCharFormat(fmt);
}
void MainWindow::on_actOpen_triggered()
{
QString curPath,aFileName;
curPath=QCoreApplication::applicationDirPath(); //获取应用程序的路径
//调用打开文件对话框打开一个文件
aFileName=QFileDialog::getOpenFileName(this,tr("打开一个文件"),curPath,
"C++程序文件(*.cpp);;H头文件(*.h);;文本文件(*.txt);;所有文件(*.*)");
if (!aFileName.isEmpty())
{
QFile aFile(aFileName); //以文件方式读出
if (aFile.open(QIODevice::ReadWrite | QIODevice::Text))
{
QTextStream aStream(&aFile); //用文本流读取文件
while (!aStream.atEnd())
ui->txtEdit->append(aStream.readLine()); //读取一个文本行
updateCurFile(aFileName); //更新状态栏显示
}
aFile.close();
}
}
void MainWindow::on_actNew_triggered()
{
//新建文件
ui->txtEdit->clear();
updateCurFile("");
}
void MainWindow::on_actFont_triggered()
{
bool ok;
QFont font = QFontDialog::getFont(&ok, this);
if (ok)
ui->txtEdit->setFont(font);
}
void MainWindow::on_spinBoxFontSize_valueChanged(int aFontSize)
{
//改变字体大小的SpinBox的响应
QTextCharFormat fmt;
fmt.setFontPointSize(aFontSize); //设置字体大小
ui->txtEdit->mergeCurrentCharFormat(fmt);
progressBar1->setValue(aFontSize);
}
void MainWindow::on_comboFont_currentIndexChanged(const QString &arg1)
{
//FontCombobox的响应,选择字体名称
QTextCharFormat fmt;
fmt.setFontFamily(arg1);//设置字体名称
ui->txtEdit->mergeCurrentCharFormat(fmt);
}

xia夏小优
- 粉丝: 195
最新资源
- maven下载安装与配置教程.md
- 【IOS应用源码】可以左右滚动的tab bar.zip
- 【IOS应用源码】酷黑轮盘计数器.zip
- 【IOS应用源码】控件的使用.zip
- 【IOS应用源码】可制作新闻图片列表的demo.zip
- 【IOS应用源码】酷炫的popup子菜单.zip
- 【IOS应用源码】垃圾桶组件.zip
- 【IOS应用源码】酷炫的图片展示效果.zip
- 【IOS应用源码】类似Chrome浏览器的多页签视图.zip
- 【IOS应用源码】类似android的9点解锁.zip
- 【IOS应用源码】老外的翻页效果──相当牛.zip
- 【IOS应用源码】类似Flipboard的杂志风格的view.zip
- 【IOS应用源码】类似js的checkbox效果的效果库.zip
- maven下载安装与配置教程.md
- 【IOS应用源码】类似安卓的底部动态提示.zip
- 【IOS应用源码】类似js的radio选项.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


