QT Day3

作业:

完成保存文件

完成图标根据键盘输入移动

#include "cenz.h"
#include "ui_cenz.h"

Cenz::Cenz(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Cenz)
{
    ui->setupUi(this);
    QPixmap a(":/1.png");
    ui->label->setScaledContents(true);
    Cenz::ui->label->setPixmap(a);

}
Cenz::~Cenz()
{
    delete ui;
}
int speed=10;
void Cenz::keyPressEvent(QKeyEvent *event)
{
    //qDebug()<<"键盘按下了"<<event->text();
    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 '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 '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 '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;
    }
}

#include "cen.h"
#include "ui_cen.h"

Cen::Cen(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Cen)
{
    ui->setupUi(this);
}

Cen::~Cen()
{
    delete ui;
}


void Cen::on_FontBtn1_clicked()
{
    bool ok;
    //调用QFontDialog类中的静态函数,getfont用于调取对应的字体对话框
    QFont f =QFontDialog::getFont(&ok,QFont("黑体",10,10,false),this,"选择字体");
    if(ok)
    {
       ui->TE1->setFont(f);
    }
    else
    {
        QMessageBox::information(this,"提示","取消了选择字体");
    }
}

void Cen::on_CorBtn_clicked()
{
    QColor c =QColorDialog::getColor(QColor("pink"),//初始颜色
                                     this,          //父组件
                                     "选择颜色");    //标题
    if(c.isValid())
    {
        ui->TE1->setTextColor(c);
    }
    else
    {
        QMessageBox::information(this,"提示","取消了选择颜色");
    }

}

void Cen::on_OpenBtn_clicked()
{
    //调用QFileDialog静态成员
    QString fileName = QFileDialog::getOpenFileName(this,
                                                    "选择文件",//父组件
                                                    "./",//起始目录
                                                    "Image File(*.png *.jpg *bmp);"
                                                    ";Text File(*.txt);"
                                                    ";All(*.*)");//过滤器
    if(fileName.isNull())
    {
        QMessageBox::information(this,"提示","取消了选择文件");
        return;
    }
    qDebug()<<fileName;

    QFile file(fileName);
    if(!file.exists())
    {
        return;
    }
    if(!file.open(QFile::ReadWrite))
    {
        return;
    }
    QByteArray msg =file.readAll();
    ui->TE1->setText(msg);
    file.close();
}

void Cen::on_SaveBtn_clicked()
{
    //调用QFileDialog静态成员
    QString fileName = QFileDialog::getSaveFileName(this,
                                                    "保存文件", // 父组件
                                                    "./", // 起始目录
                                                    "Text File(*.txt);;All Files(*.*)"); // 过滤器
    if (fileName.isNull())
    {
        QMessageBox::information(this, "提示", "取消了保存文件");
        return;
    }
    qDebug() << fileName;

    QFile file(fileName);
    if (!file.open(QFile::WriteOnly))
    {
        return;
    }
    // 获取需要保存的文本数据
    QString textToSave = ui->TE1->toPlainText();
    QByteArray data;
    // 写入文件
    data.append(textToSave);
    int a=file.write(data);
    if (a == -1)
    {
        // 写入失败
        QMessageBox::critical(this, "错误", "保存文件失败");
    }
    else
    {
        QMessageBox::information(this, "提示", "保存文件成功");
    }
    file.close();
}

思维导图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值