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;
    }
    }
}
相关推荐
liulilittle7 分钟前
SNIProxy 轻量级匿名CDN代理架构与实现
开发语言·网络·c++·网关·架构·cdn·通信
tan77º41 分钟前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
GiraKoo1 小时前
【GiraKoo】C++14的新特性
c++
悠悠小茉莉1 小时前
Win11 安装 Visual Studio(保姆教程 - 更新至2025.07)
c++·ide·vscode·python·visualstudio·visual studio
坏柠2 小时前
C++ Qt 基础教程:信号与槽机制详解及 QPushButton 实战
c++·qt
泽02022 小时前
C++之红黑树认识与实现
java·c++·rpc
雨落倾城夏未凉3 小时前
4.信号与槽
后端·qt
岁忧3 小时前
(LeetCode 每日一题) 1865. 找出和为指定值的下标对 (哈希表)
java·c++·算法·leetcode·go·散列表
whoarethenext3 小时前
使用 C++ 实现 MFCC 特征提取与说话人识别系统
开发语言·c++·语音识别·mfcc
R-G-B3 小时前
【MFC】Combobox下拉框中4个选项,运行后点击下拉框选项不能全部展示出来,只能显示2个选项,需要垂直滚动条滚动显示其余选项
c++·mfc