QTday3

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("balck"),
                                    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 File(*.*)");
    //判断是否选中文件
    if(fileName.isNull())
    {
        QMessageBox::information(this,"提示","已取消选择文件");
        return;
    }

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


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

    //2.判断文件是否存在
    if(!file.exists())
    {
        return;
    }
    //3.打开文件
    if(!file.open(QFile::ReadWrite))
    {
        return;
    }

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

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

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

}

void Widget::on_savebtn_clicked()
{

    //调用QFileDialog的静态成员函数getOpenFileName来获取选中文件的路径
    QString fileName=QFileDialog::getSaveFileName(this,             //父组件
                                                  "选择文件",         //对话框标题
                                                  "./",              //起始路径
                                                  "Image File(*.png *.jpg *.bmp);;Text File(*.txt);;All File(*.*)");
    //判断是否选中文件
    if(fileName.isNull())
    {
        QMessageBox::information(this,"提示","已取消选择文件");
        return;
    }

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


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

    //2.判断文件是否存在
//    if(!file.exists())
//    {
//        return;
//    }
    //3.打开文件
    if(!file.open(QFile::ReadWrite))
    {
        return;
    }

    //4.写入文件内容
    QString buf = ui->textEdit->toPlainText();
    file.write(buf.toLocal8Bit());
    //6.关闭文件
    file.close();


}

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();

    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()-2);
                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()+2);
                break;
    }
    //左移函数
    case 'A':
    {
        if(ui->label->x()+ui->label->width()<=0)
        {
            ui->label->move(this->width(),ui->label->y());
        }
        ui->label->move(ui->label->x()-2,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()+2,ui->label->y());
                break;
    }
    }

}

3.思维导图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值