1.保存
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QFont font;
font.setPointSize(14);
ui->textEdit->setFont(font);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_fontbtn_clicked()
{
//调用QFontdialog类中的静态成员函数,getfont函数来调用系统提供的字体对话框
bool ok;
QFont f = QFontDialog::getFont(&ok, //返回是否选中字体
QFont("宋体",14,10,false),//初始字体
this, //父组件
"选择字体"); //对话框标题
//将选中的字体进行使用
if(ok)
{
//将全部字体更改字体大小
//ui->textEdit->setFont(f);
//将选中字体更改字体大小
ui->textEdit->setCurrentFont(f);
}
}
//颜色按钮对应的槽函数
void Widget::on_colorbtn_clicked()
{
//调用静态成员函数,获取系统中的颜色对话框
QColor c = QColorDialog::getColor(QColor("black"),
this,"选择颜色");
if(c.isValid())
{
//颜色合法,直接使用即可
ui->textEdit->setTextColor(c);
//ui->textEdit->setTextBackgroundColor("blue");
}
}
//打开按钮对应的槽函数
void Widget::on_openbtn_clicked()
{
//调用QFileDialog的静态成员函数getOpenFileName来获取选中文件路径
QString filename = QFileDialog::getOpenFileName(this, //父组件
"选择文件", //对话框标题
"./", //起始路径
"All(*.*);;Image File(*.png *.jpg *.bmp);;Text File(*.txt)"); //过滤器
if(filename.isNull())
{
return;
}
//qDebug() << filename;
//实例化一个文件类对象
QFile file(filename); //使用获取到的文件路径,实例化出一个文件类对象,后期对于文件的操作,都是基于该对象
//判断文件是否存在
if(!file.exists())
{
return;
}
//文件存在则打开文件
if(!file.open(QFile::ReadWrite))
{
return;
}
//读取文件中的内容
QByteArray msg = file.readAll();
//将内容展示到ui界面
ui->textEdit->setText(msg);
//关闭文件
file.close();
}
void Widget::on_savebtn_clicked()
{
QString filename = QFileDialog::getSaveFileName(this,
"选择文件",
"./",
"All(*.*);;Image File(*.png *.jpg *.bmp);;Text File(*.txt)");
if(filename.isNull())
{
QMessageBox::information(this,"提示","您取消了保存文件");
return;
}
QFile file(filename);
if(!file.open(QFile::ReadWrite))
{
QMessageBox::critical(this,"错误","文件保存失败!");
return;
}
QString msg = ui->textEdit->toPlainText();
file.write(msg.toLocal8Bit());
file.close();
}
void Widget::on_clearbtn_clicked()
{
int ret = QMessageBox::warning(this,"警告","是否清除已写内容?",
QMessageBox::Yes|QMessageBox::No,
QMessageBox::No);
if(ret == QMessageBox::Yes)
{
ui->textEdit->clear();
}
}
2.键盘事件
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
//键盘按下事件处理函数的定义
void Widget::keyPressEvent(QKeyEvent *event)
{
//qDebug() << "键盘被按下了" << event->text() << "键值为" <<event->key();
int speed = 30;
switch(event->key())
{
case 'W':
{
if(ui->label->y() <= 0-ui->label->height())
{
ui->label->move(ui->label->x(),this->height());
}
ui->label->move(ui->label->x(),ui->label->y()-speed);
}
break;
case 'S':
{
if(ui->label->y() > this->height())
{
ui->label->move(ui->label->x(),0-ui->label->height());
}
ui->label->move(ui->label->x(),ui->label->y()+speed);
}
break;
case 'A':
{
if(ui->label->x() <= 0-ui->label->width())
{
ui->label->move(this->width(),ui->label->y());
}
ui->label->move(ui->label->x()-speed,ui->label->y());
}
break;
case 'D':
{
if(ui->label->x() > this->width())
{
ui->label->move(0-ui->label->width(),ui->label->y());
}
ui->label->move(ui->label->x()+speed,ui->label->y());
}
break;
}
}