QT day3作业

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;
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值