QTday3(QT实现文件对话框保存操作、实现键盘触发事件【WASD控制小球的移动】)

1.实现文件对话框保存操作

#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::on_fontBtn_clicked()
{
    //调用QFontDialog类中的静态成员函数,getFont函数来调取系统提供的字体对话框
    bool ok;                     //用于接受用户是否选中了字体
    QFont f = QFontDialog::getFont(&ok,                           //返回是否选中字体
                                   QFont("楷书",10,10,false),     //初始字体
                                   this,                         //父组件
                                   "选择字体");                   //对话框标题
    //将选中的字体进行使用
    if(ok)
    {
        //选中了字体,将字体设置到文本上
        //  ui->textEdit->setFont(f);
        ui->textEdit->setCurrentFont(f);

    }
    else
    {
        //没选中字体
        QMessageBox::information(this,"提示","您取消了选择字体");

    }

}


//颜色按钮对应的槽函数
void Widget::on_colorBtn_clicked()
{
    QColor c =  QColorDialog::getColor(QColor("pink"),
                                       this,
                                       "选择颜色");
    //对选中的颜色判断合法性
    if(c.isValid())
    {
        //颜色合法。直接使用即可
        //ui->textEdit->setTextColor(c);
        ui->textEdit->setTextBackgroundColor(c);
    }
    else
    {
        //颜色不合法
        QMessageBox::information(this,"提示","您取消了选择颜色");
    }

}

//打开文件按钮对应的槽函数
void Widget::on_openBtn_clicked()
{
    //调用QFileDialog的静态成员函数getOpenFileName来获取选中文件的路径
    QString fileName = QFileDialog::getOpenFileName(this,           //父组件
                                                    "选择文件",      //对话框标题
                                                    "./",           //起始路径
                                                    "Image File(*.png *.jpg *bmp);;Text File(*.txt);;All(*.*)");    //过滤器
    if(fileName.isNull())
    {
        QMessageBox::information(this,"提示","您取消了选择文件");
        return;
    }

    //输出文件路径
    qDebug() << fileName;

    //1、实例化一个文件对象
    QFile file(fileName);     //使用获取到的文件路径,实例化一个文件对象,后期对文件的操作都是基于该对象

    //2、判断文件是否存在
    if(!file.exists())
    {
        return;
    }

    //3、打开文件
    if(!file.open(QFile::ReadOnly))
    {
        return;
    }

    //4、读取文件中的内容
    QByteArray msg = file.readAll();

    //将内容展示到ui界面
    ui->textEdit->setText(QString::fromLocal8Bit(msg));

    //    //获取文本编辑器中的内容
    //    ui->textEdit->toPlainText();

    //5、关闭文件
    file.close();

}

void Widget::on_saveBtn_clicked()
{
    //调用QFileDialog的静态成员函数getSaveFileName来获取选中文件的路径
    QString filename = QFileDialog::getSaveFileName(this,                     //父组件
                                                    "保存文件",                //对话框标题
                                                    "./",                     //起始路径
                                                    "all file(*.*);;Text(*.txt);;Image(*.png,*.jpg,*.gif)");   //过滤器
    if(filename.isNull())
    {
        QMessageBox::information(this,"提示","您取消了选择文件");
        return;
    }

    //输出文件路径
    qDebug() << filename;

    //文件操作
    QFile file(filename);          //使用获取到的文件路径,实例化一个文件对象,后期对文件的操作都是基于该对象

    //打开文件
    if(!file.open(QFile::Append))
    {
        return;
    }

    //获取textEdit中的内容
    QString msg = ui->textEdit->toPlainText();

    //将textEdit中的内容写入到filename中
    file.write(msg.toLocal8Bit());

    //关闭文件
    file.close();

}

QTday3(QT实现文件对话框保存操作、实现键盘触发事件【WASD控制小球的移动】)_第1张图片 

QTday3(QT实现文件对话框保存操作、实现键盘触发事件【WASD控制小球的移动】)_第2张图片

2.实现键盘触发事件(WASD控制小球的移动)

#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();
    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()-10);
    }
        break;
    case 'S' :
    {
        if(ui->label->y() >= this->height())
        {
            ui->label->move(ui->label->x(),0);
        }
        ui->label->move(ui->label->x(),ui->label->y()+10);
    }
        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()-10,ui->label->y());
    }
        break;
    case 'D' :
    {
        if(ui->label->x() >= this->width())
        {
            ui->label->move(0,ui->label->y());
        }
        ui->label->move(ui->label->x()+10,ui->label->y());
    }
        break;


    }

}

//键盘抬起事件处理函数的定义
void Widget::keyReleaseEvent(QKeyEvent *event)
{

}

QTday3(QT实现文件对话框保存操作、实现键盘触发事件【WASD控制小球的移动】)_第3张图片

你可能感兴趣的:(命令模式,qt)