当前位置: 首页 > news >正文

qt day 3

1.完成自定义的记事本文件的保存功能

-------------------------------------------------------------------------
widget.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_fontbtn_clicked()
{//调用QFontDialog中的成员函数getFont函数来获取系统提供的字体对话框bool ok;    //接收用户是否选择字体QFont font = QFontDialog::getFont(&ok,QFont("隶书",14,14,0),this,"选择字体");if(ok == 1) //选中了字体{//将字体设置到文本上//ui->textEdit->setFont(font);//将字体设置到选中文本上ui->textEdit->setCurrentFont(font);}else        //未选中字体{QMessageBox::information(this,"提示","未选择字体");}
}
void Widget::on_colbtn_clicked()
{QColor col = QColorDialog::getColor(QColor("black"),this,"颜色选择");if(col.isValid())//颜色合法{//ui->textEdit->setTextColor(col);ui->textEdit->setTextBackgroundColor(col);}else    //颜色不合法{QMessageBox::information(this,"提示","颜色不合法");}
}
void Widget::on_openbtn_clicked()
{QString fname = QFileDialog::getOpenFileName(this,"选择文件","./","Image File(*.png *.jpg *.bmp);;Text File(*.txt);;All(*.*)");if(fname.isNull()){QMessageBox::information(this,"文件选择","取消选择");}else{QFile rf(fname);if(!rf.exists()){return;}if(!rf.open(QFile::ReadWrite)){return;}QByteArray msg = rf.readAll();ui->textEdit->setText(msg);rf.close();}
}
void Widget::on_savebtn_clicked()
{QString fname = QFileDialog::getSaveFileName(this,"保存","./","Text File(*.txt);;Image File(*.jpg *.png *.bmp);;All File(*.*)");if(fname.isNull()){QMessageBox::information(this,"文件选择","取消选择");}else{QFile wf(fname);if(!wf.open(QFile::WriteOnly)){return;}QString buf;buf = ui->textEdit->toPlainText();qDebug() << buf;wf.write(buf.toUtf8());}
}

2.使用键盘事件实现图片的上下左右移动

-------------------------------------------------------------------------
widget.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::keyPressEvent(QKeyEvent *event)
{qDebug() << "键盘按下" << event->text() << "键值为 : " << event->key();switch(event->key()){case 'W':ui->label->move(ui->label->x(),ui->label->y()-1);if(ui->label->y() <= 0-ui->label->height()){ui->label->move(ui->label->x(),this->height());}break;case 'S':ui->label->move(ui->label->x(),ui->label->y()+1);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()-1,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()+1,ui->label->y());if(ui->label->x() >= this->width()){ui->label->move(0-ui->label->width(),ui->label->y());}}
}

http://www.lryc.cn/news/160288.html

相关文章:

  • SpotBugs检查java代码:在整数上进行没有起任何实际作用的位操作(INT_VACUOUS_BIT_OPERATION)
  • javaWeb录入数据异常,mysql显示错误
  • Vue + Element UI 前端篇(十):动态加载菜单
  • 图的应用(最小生成树,最短路径,有向无环图)
  • python正则表达式笔记2
  • matplotlib 的默认字体和默认字体系列
  • STMCUBEMX_IIC_DMA_AT24C64读取和写入
  • wsl2相关问题
  • 使用idea时,光标变成了不能按空格键,只能修改的vim格式,怎么切换回正常光标
  • vue+antd——实现table表格的打印——分页换行,每页都有表头——基础积累
  • linux C MD5计算
  • vue3学习源码笔记(小白入门系列)------ 组件更新流程
  • 数学建模B多波束测线问题B
  • Pytest 框架执行用例流程浅谈
  • C#__资源访问冲突和死锁问题
  • 机器学习——Logistic Regression
  • 创建husky规范前端项目
  • 深浅拷贝与赋值
  • bert ranking pairwise demo
  • GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图
  • SpringBoot整合Swagger3
  • detectron2 install path
  • 如何将DHTMLX Suite集成到Scheduler Lightbox中?让项目管理更可控!
  • 什么是JVM常用调优策略?分别有哪些?
  • 《向量数据库指南》——向量数据库Milvus Cloud 2.3的可运维性:从理论到实践
  • select多选回显问题 (取巧~)
  • 光伏并网双向计量表ADL400
  • 十三、MySQL(DQL)语句执行顺序
  • 【高德地图】根据经纬度多边形的绘制(可绘制区域以及任意图形)
  • C++ std::pair and std::list \ std::array