【QT学习】7.事件,把文本显示在页面中(文本可变),鼠标指针切换,鼠标左键右键按下,qt设置背景样式

devtools/2024/11/15 4:51:07/

0.创建项目,事件的创建

1.事件的位置

2.这就是多态,子类重写父类函数,子类调用子类函数,也可以调用父类函数。但同函数名

1.要求:文本显示在页面中(文本可变)

1.文本显示在页面的核心代码

        主要步骤是:(1)加入QString中

        QString str=QString("移动:%1,%2").arg(event->x()).arg(event->y());

(2)setText进入label中

void MyLabel::mouseMoveEvent(QMouseEvent *event){qDebug() <<"移动:" << event->x() << "," << event->y() << endl;//实现:坐标显示在页面中间QString str=QString("移动:%1,%2").arg(event->x()).arg(event->y());this->setText(str);
}

补充:修改字体大小,居中

QString str=QString("<center><h1>移动:%1,%2</h2></center>").arg(event->x()).arg(event->y());
this->setText(str);

2.要求:页面左侧与右侧鼠标指针变换

1.创建图标

2.添加qt资源(鼠标指针图片)

3.添加鼠标指针图片

4.代码:

MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{//是能Mouse的事件,MyLabel::mouseMoveEvent可被事件接受this->setMouseTracking(true);//(1)从资源中右键--》复制文件路径//:/new/prefix1/C:/Users/Administrator/Desktop/5.jpg//:/new/prefix1/C:/Users/Administrator/Desktop/6.jpgpBitmap1 = new QPixmap(":/new/prefix1/C:/Users/Administrator/Desktop/5.jpg");pBitmap2 = new QPixmap(":/new/prefix1/C:/Users/Administrator/Desktop/6.jpg");//调整指针的大小*pBitmap1 =  pBitmap1->scaled(40,40,Qt::KeepAspectRatio);*pBitmap2 =  pBitmap2->scaled(40,40,Qt::KeepAspectRatio);
}
//函数自动创建一个QMouseEvent *event事件,去被事件列表接受
void MyLabel::mouseMoveEvent(QMouseEvent *event){qDebug() <<"移动:" << event->x() << "," << event->y() << endl;//实现:坐标显示在页面中间QString str=QString("<center><h1>移动:%1,%2</h2></center>").arg(event->x()).arg(event->y());this->setText(str);if(event->x()<=this->width()/2){setCursor(QCursor(*pBitmap1));}else{setCursor(QCursor(*pBitmap2));}
}

结果:

        由于截图时后鼠标会变,没有截上

3.鼠标左键、右键按下

void MyLabel::mousePressEvent(QMouseEvent *ev){if(ev->button() == Qt::LeftButton)qDebug() <<"左键按下"  << endl;else if(ev->button() == Qt::RightButton)qDebug() <<"右键按下"  << endl;
}

4.qt背景的设置

1.代码(;为转行),具体可以百度搜索语法

//设置qt样式表(背景)
//:/new/prefix1/C:/Users/Administrator/Desktop/1.jpg
this->setStyleSheet("QLabel{color:rgb(0,255,255);""background-color:white;""background-image:url(:/new/prefix1/C:/Users/Administrator/Desktop/1.jpg)}");

2.label背景

注意:以上我们是在自己定义的label控件中处理事件,里面不能处理按钮。

        处理:按钮处理事件应该在主页面上实现。

5.按钮的处理

1.主页面写

2.代码

//按键按下
void Widget::keyPressEvent(QKeyEvent *event){//qDebug() << event->key() << endl;qDebug() << event->text() << endl;switch(event->key()){case Qt::Key_Shift:isUpper = true;qDebug() << "Shift" << endl;break;case Qt::Key_A:if(isUpper)qDebug() << "A" << endl;elseqDebug() << "a" << endl;break;}
}
//按键松开
void Widget::keyReleaseEvent(QKeyEvent *event){switch(event->key()){case Qt::Key_Shift:isUpper = false;break;}
}

3.输出a

6.定时器的处理

1.创建

2.定时器事件处理

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);progressBarValue = 100;ui->progressBar->setValue(progressBarValue);}
//定时器事件处理
void Widget::timerEvent(QTimerEvent *event){if(progressBarValue>0)progressBarValue--;ui->progressBar->setValue(progressBarValue);
}

3.按钮处理

    case Qt::Key_B:qDebug() << "启动定时器" << endl;timerId = startTimer(1000);break;case Qt::Key_P:qDebug() << "关闭定时器" << endl;killTimer(timerId);break;

结果:

        按B定时器开始每秒减去1,按P停止定时器

总结:

        事件进入队列,后事件处理器处理,事件处理器使用自写的事件函数处理。


http://www.ppmy.cn/devtools/5914.html

相关文章

深入了解 Gitea:轻量级的自托管 Git 服务

在软件开发和团队协作中&#xff0c;版本控制系统是不可或缺的工具。Git 是目前最流行的分布式版本控制系统之一&#xff0c;而 Gitea 则是基于 Git 的一个轻量级、自托管的 Git 服务。本文将介绍 Gitea 的特点、功能和使用方法&#xff0c;帮助读者更好地了解和使用这一工具。…

电子元件替换原则

由于降低BOM的成本&#xff08;比如国产化&#xff09;、电子元件已经停产、维修时电子元件的损坏更换等原因&#xff0c;我们需要做同类电子元件的替换工作。那么替换有什么原则呢&#xff1f;本内容将不间断更新一些原则。紫色文字是超链接&#xff0c;点击自动跳转至相关博文…

[阅读笔记15][Orca]Progressive Learning from Complex Explanation Traces of GPT-4

接下来是微软的Orca这篇论文&#xff0c;23年6月挂到了arxiv上。 目前利用大模型输出来训练小模型的研究都是在模仿&#xff0c;它们倾向于学习大模型的风格而不是它们的推理过程&#xff0c;这导致这些小模型的质量不高。Orca是一个有13B参数的小模型&#xff0c;它可以学习到…

vlan 和 trunk实验

VLAN&#xff08;Virtual Local Area Network&#xff09;&#xff0c;即虚拟局域网&#xff0c;是一种网络技术&#xff0c;它的主要原理是将物理网络划分为多个逻辑子网&#xff0c;每个子网形成一个独立的广播域。这样&#xff0c;VLAN内的主机间通信就像在同一个局域网内一…

gazebo中vins-fusion在仿真小车上的部署

软件要求&#xff1a;Ubuntu 20.04 ros的noetic版本&#xff0c;我是在虚拟机vitrualbox上运行的 这几天在学ROS&#xff0c;跟着赵虚左老师过了一遍之后&#xff0c;感觉还是有很多不懂的地方&#xff0c;xtdrone上仿真跟着文档走了一遍&#xff0c;好像没学到什么东西&#…

Web后端-请求响应

黑马程序员JavaWeb开发教程 文章目录 一、请求1、简单参数2、实体参数3、数组集合参数&#xff08;1&#xff09;数组参数&#xff08;2&#xff09;集合参数 4、日期参数5、json参数&#xff08;1&#xff09;在Postman中怎么发起请求来传递JSON格式的请求参数&#xff08;2&a…

【网络安全技术】——网络安全设备(学习笔记)

&#x1f4d6; 前言&#xff1a;网络防火墙&#xff08;简称为“防火墙”&#xff09;是计算机网络安全管理中应用最早和技术发展最快的安全产品之一。随着互联应用的迅猛发展&#xff0c;各种安全问题和安全隐患日渐突出。防火墙及相关安全技术能够最大可能地解决各类安全问题…

2024-Java-Maven学习笔记

Maven Maven是一个Java项目管理和构建工具&#xff0c;作用&#xff1a;定义&#xff08;规范&#xff09;项目结构、项目依赖、使用统一的方式自动化构建&#xff08;clean、compile&#xff09;。 提供了一套依赖管理机制&#xff1a;利用仓库统一管理jar包&#xff0c;利用…