9.1作业

字体对话框、颜色对话框、文件对话框、保存和打开文件

widget.cpp

cpp 复制代码
#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_zitibtn_clicked()
{
    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_yansebtn_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()
{
    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界面
    ui->textEdit->setText(msg);
}


void Widget::on_baocunbtn_clicked()
{
    QString filename=QFileDialog::getSaveFileName(this,
                                                  "选择文件",
                                                  "./",
                                                  "Image File(*.png *.jpg *bmp);;Text File(*.txt);;All(*.*)");
    if(filename.isNull())
    {
        QMessageBox::information(this,"提示","您取消选择文件");
        return;
    }
    qDebug()<<filename;
    //实例化文件对象
    QFile file(filename);//使用获取到的文件路径,实例化一个文件对象
    if(!file.open(QFile::WriteOnly|QFile::Text))
    {
        QMessageBox::critical(this,"错误","无法打开文件");
        return;
    }

    QString text = ui->textEdit->toPlainText();
    QByteArray byteArray = text.toLocal8Bit();
    file.write(byteArray);

    file.close();

}

键盘按下处理函数之物体上下左右移动

cpp 复制代码
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()-5);
        break;
    }
    case 'S':
    {
        ui->label->move(ui->label->x(),ui->label->y()+5);
        if(ui->label->y()>=this->height())
        {
            ui->label->move(ui->label->x(),0-ui->label->height());
        }
        break;
    }
    case 'A':
    {
        ui->label->move(ui->label->x()-5,ui->label->y());
        if(ui->label->x()<=0-ui->label->width())
        {
            ui->label->move(this->width(),ui->label->y());
        }
        break;
    }
    case 'D':
    {
        ui->label->move(ui->label->x()+5,ui->label->y());
        if(ui->label->x()>=this->width())
        {
            ui->label->move(0-ui->label->width(),ui->label->y());
        }
        break;
    }
    }
}
相关推荐
dialect_8 小时前
KMP算法
开发语言·c++·算法
听风吹等浪起10 小时前
第26章:ViT+InceptionDW+FocalLoss改进|CT骨折影像二分类完整Pytorch实现(含PyQt5推理GUI)
pytorch·qt·分类
ShineWinsu10 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
傲世仙尊10 小时前
多态-虚表才活到运行期符号表早已消失
c++
chenbingjie_c11 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
是main不是漫11 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
·present·11 小时前
CSAPP(Bomb lab)
c语言·c++
王老师青少年编程11 小时前
2026年信奥赛c++普及组csp-j第二轮复赛真题
c++·真题·csp·信奥赛
时间的拾荒人12 小时前
CMake 常用命令详解:从版本声明到安装部署
c++·面试
sycmancia14 小时前
Qml——Image和AnimatedImage使用
qt