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;
    }
    }
}
相关推荐
adsadswee4 小时前
Qt 样式与 QLinearGradient 渐变详解
开发语言·qt·qt样式表·qlineargradient·qss渐变效果
咕咕嘎嘎10245 小时前
C++六个默认成员函数
c++
feiyangqingyun6 小时前
Qt优化onvif设备搜索/一键批量搜索/onvif设备模拟器/几千路并发/实时推流/虚拟监控摄像头
qt·onvif模拟器
wd_cloud6 小时前
QT/6.7.2/Creator编译Windows64 MySQL驱动
开发语言·qt·mysql
亭上秋和景清6 小时前
指针进阶:函数指针详解
开发语言·c++·算法
胡萝卜3.06 小时前
C++现代模板编程核心技术精解:从类型分类、引用折叠、完美转发的内在原理,到可变模板参数的基本语法、包扩展机制及emplace接口的底层实现
开发语言·c++·人工智能·机器学习·完美转发·引用折叠·可变模板参数
9ilk6 小时前
【C++】--- C++11
开发语言·c++·笔记·后端
FMRbpm7 小时前
队列练习--------最近的请求次数(LeetCode 933)
数据结构·c++·leetcode·新手入门
biter down7 小时前
C++ 函数重载:从概念到编译原理
开发语言·c++
ZouZou老师8 小时前
C++设计模式之解释器模式:以家具生产为例
c++·设计模式·解释器模式