您的位置:首页 > 新闻 > 热点要闻 > 资源开发公司_网站制作费用价格表_小说推广接单平台_广州网站排名优化报价

资源开发公司_网站制作费用价格表_小说推广接单平台_广州网站排名优化报价

2025/2/27 17:45:25 来源:https://blog.csdn.net/m0_62174752/article/details/145557174  浏览:    关键词:资源开发公司_网站制作费用价格表_小说推广接单平台_广州网站排名优化报价
资源开发公司_网站制作费用价格表_小说推广接单平台_广州网站排名优化报价

1> 将鼠标事件和键盘事件相关代码重新实现一遍

.h:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QKeyEvent>             //键盘事件类
#include<QDebug>
#include<QMouseEvent>            //鼠标事件类QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//重写键盘按下事件void keyPressEvent(QKeyEvent *event) override;//重写键盘抬起事件处理函数void keyReleaseEvent(QKeyEvent *event) override;//重写鼠标按下事件处理函数void mousePressEvent(QMouseEvent *event) override;//重写鼠标抬起事件处理函数void mouseReleaseEvent(QMouseEvent *event) override;//重写鼠标双击事件处理函数void mouseDoubleClickEvent(QMouseEvent *event) override;//重写鼠标移动事件处理函数void mouseMoveEvent(QMouseEvent *event) override;private:Ui::Widget *ui;
};
#endif // WIDGET_H

.cpp:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//开启鼠标追踪功能this->setMouseTracking(true);
}Widget::~Widget()
{delete ui;
}//重写键盘按下事件
void Widget::keyPressEvent(QKeyEvent *event)
{qDebug()<< event->text()<<"被按下,对应的键值为:"<<event->key();switch (event->key()){//判断是否为W字符case 'W':{//判断圆球是否脱离了整个界面if(ui->label->y() <= -ui->label->height()){//将组件移动到整个界面的最下方ui->label->move(ui->label->x(), this->height());}//将ui界面上的lab向上偏移ui->label->move(ui->label->x(), ui->label->y()-1);}break;}
}
//键盘抬起事件处理函数的实现
void Widget::keyReleaseEvent(QKeyEvent *event)
{qDebug()<< event->text()<<"被抬起,对应的键值为:"<<event->key();
}//鼠标按下事件处理函数的实现
void Widget::mousePressEvent(QMouseEvent *event)
{//判断是哪个键被按下if(event->button() == Qt::LeftButton){qDebug()<<"鼠标左键被按下,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}else if(event->button() == Qt::RightButton){qDebug()<<"鼠标右键被按下,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}else if(event->button() == Qt::MiddleButton){qDebug()<<"鼠标中间键被按下,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}
}//鼠标抬起事件处理函数
void Widget::mouseReleaseEvent(QMouseEvent *event)
{//判断是哪个键被抬起if(event->button() == Qt::LeftButton){qDebug()<<"鼠标左键被抬起,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}else if(event->button() == Qt::RightButton){qDebug()<<"鼠标右键被抬起,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}else if(event->button() == Qt::MiddleButton){qDebug()<<"鼠标中间键被抬起,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}
}void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{//判断是哪个键被双击if(event->button() == Qt::LeftButton){qDebug()<<"鼠标左键被双击,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}else if(event->button() == Qt::RightButton){qDebug()<<"鼠标右键被双击,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}else if(event->button() == Qt::MiddleButton){qDebug()<<"鼠标中间键被双击,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}
}void Widget::mouseMoveEvent(QMouseEvent *event)
{//判断是哪个键被移动if(event->buttons() == Qt::LeftButton){qDebug()<<"鼠标左键被移动,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}else if(event->buttons() == Qt::RightButton){qDebug()<<"鼠标右键被移动,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}else if(event->buttons() == Qt::MiddleButton){qDebug()<<"鼠标中间键被移动,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();}qDebug()<<"鼠标被移动,界面下标为:"<<event->pos()<<"  全局坐标为:"<<event->globalPos();ui->label->move(event->x()-ui->label->width()/2, event->y()-ui->label->height()/2);
}

2> 将文本编辑器功能完善

.h:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_fontbtn_clicked();void on_colorbtn_clicked();void on_openbtn_clicked();void on_inputbtn_clicked();void on_savebtn_clicked();private:Ui::Widget *ui;
};
#endif // WIDGET_H

.cpp:

#include "widget.h"
#include "ui_widget.h"
#include <QFont>
#include <QFontDialog>
#include <QMessageBox>
#include <QColor>
#include <QColorDialog>
#include <QFileDialog>
#include <QFile>
#include <QDebug>
#include <QInputDialog>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}//字体对话框对应的槽函数
void Widget::on_fontbtn_clicked()
{bool ok;//用于接收用户是否选中字体//调用字体对话框的静态成员函数,打开字体对话框QFont f = QFontDialog::getFont(&ok,               //接收是否选中字体QFont("楷体",10,10),//对话框初始字体this,              //父组件"选择字体");        //对话框标题if(ok == true){//将选择的字体设置到文本编辑器中//ui->textEdit->setFont(f);ui->textEdit->setCurrentFont(f);}else{QMessageBox::information(this,"提示","用户取消了选择字体");}}
//颜色按钮对应的槽函数
void Widget::on_colorbtn_clicked()
{QColor c = QColorDialog::getColor(QColor("red"),this,"选择颜色");if(c.isValid()){//将选中的颜色,设置到文本编辑器中ui->textEdit->setTextColor(c);//设置字体颜色ui->textEdit->setTextBackgroundColor(c);//设置背景颜色}else{//用户点击的取消按钮QMessageBox::information(this,"提示","用户选择了取消选择颜色");}
}
//打开文件按钮对应的槽函数
void Widget::on_openbtn_clicked()
{QString fname = QFileDialog::getOpenFileName(this,"选择文件","./","all(*.*);;text(*.txt);;Image(*.png *.jpg *.xpm);;sourse(*.cpp)");//进行文件Io操作//1、实例化一个文件对象QFile f;//使用无参构造f.setFileName(fname);//设置要管理文件  QFile f(fname)//2、打开文件if(!f.exists()){QMessageBox::information(this,"提示","文件不存在");return;}if(!f.open(QFile::ReadOnly | QFile::WriteOnly)){QMessageBox::information(this,"提示","文件打开失败");}//程序执行至此,表示文件已经打开//读取文件中的数据QByteArray msg = f.readAll();ui->textEdit->setText(QString(msg));f.close();
}
//对话框的槽函数
void Widget::on_inputbtn_clicked()
{bool ok;QString text = QInputDialog::getText(this,"输入文本","请输入名字",QLineEdit::Password,"",&ok);if(ok == true){//表示用户确定了输入的数据,可以正常使用数据了qDebug()<< text;}else{QMessageBox::information(this,"提示","用户取消了输入数据");}
}// 保存按钮对应的槽函数
void Widget::on_savebtn_clicked()
{QString fname = QFileDialog::getSaveFileName(this,"保存文件","./","Text Files (*.txt);;All Files (*.*)");// 如果用户选择了文件名if (!fname.isEmpty()){QFile file(fname);if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){QMessageBox::warning(this, "错误", "无法保存文件");return;}QTextStream out(&file);// 获取文本编辑器中的内容并写入文件out << ui->textEdit->toPlainText();file.close();QMessageBox::information(this, "提示", "文件保存成功");}else{QMessageBox::information(this, "提示", "用户取消了保存");}
}

3> 思维导图c:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com