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;
    }
    }
}
相关推荐
OPEN-F1 小时前
C++进阶教程:继承与多态
开发语言·c++
luj_17683 小时前
大律师考核应重能力与科技素养
c语言·开发语言·c++·经验分享·算法
刃神太酷啦4 小时前
Linux 系统 MySQL 完整安装配置教程:从卸载 MariaDB 到优化 my.cnf----《Hello MySQL!》(1)
android·linux·c语言·c++·mysql·leetcode·mariadb
汉克老师7 小时前
CSP-J 初赛(以满分为目标):第十五课《结构体、排序与自定义比较——从“给数字排队”到“给一群人排队”》
c++·csp-j·小学生·学c++编程
HugoStudio_SWAN8 小时前
C++ CMD 互动动画:按键触发爆炸效果
开发语言·c++·学习·程序人生
水饺编程8 小时前
第5章,[Win32 章节] :Polygon 函数和多边形填充模式
c语言·c++·windows·visual studio
wuminyu8 小时前
Java FFM处理网络读写事件源码剖析
java·linux·c语言·jvm·c++
一木 之林8 小时前
C/C++ 面向对象编程(OOP)(进阶)
java·c语言·c++
千谦阙听10 小时前
C++篇:类和对象(上)
开发语言·c++
_Narcissus_10 小时前
分治&递归
数据结构·c++·笔记·算法·leetcode·递归·分治