qt作业day3

本文介绍了使用Qt库创建的文本编辑器,包含字体选择、颜色设置功能,以及响应键盘事件如WASD移动控件的示例。
摘要由CSDN通过智能技术生成
#include "txteditor.h"
#include "ui_txteditor.h"

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

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

void Txteditor::on_btn1_clicked()
{
    bool ok;
    QFont f = QFontDialog :: getFont(&ok,QFont("楷体",10,10,false),this,"字体选择");
    //将选中字体使用

    if(ok)
    {
//        ui->textEdit->setFont(f);
        ui->textEdit->setCurrentFont(f);
    }
    else
    {

    }
}

void Txteditor::on_colorBtn_clicked()
{
    QColor col = QColorDialog :: getColor(QColor("black"),this,"颜色选择");

    if(col.isValid())
    {
        ui->textEdit->setTextColor(col);
    }
    else
    {
        QMessageBox :: information(this,"提示","取消选择",QMessageBox :: Ok);
    }
}

void Txteditor::on_open_clicked()
{
     QString filename = QFileDialog :: getOpenFileName(this,tr("队长"),"./",tr("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界面
     ui->textEdit->setText(QString :: fromLocal8Bit(msg));

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

}

void Txteditor::on_save_clicked()
{
    QString filename = QFileDialog :: getSaveFileName(this,"保存文件","./",tr("Image File(*.png *.jpg *bmp);;Text File(*.txt);;All(*.*)"));
    if(filename.isNull())
    {
        return;
    }

    //用filename实例化文件对象

    QFile file(filename);

//    if(!file.exists())
//    {
//        return;
//    }

    file.open(QFile :: ReadWrite);



    QString rdbuf = ui->textEdit->toPlainText();

    file.write(rdbuf.toUtf8());
    file.close();
}

运行效果:

#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() << "按下" << "\t" << 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() - 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 '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() + 10);
            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() + 10,ui->label->y());
            break;
    }

}

void Widget::keyReleaseEvent(QKeyEvent *event)
{
    qDebug() << "释放" << event->text();
}

运行效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值