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

企业网站源码带后台免费的网站域名查询

企业网站源码带后台,免费的网站域名查询,上海今天死亡新闻,兰州疫情最新消息1小时内城关区目录 1.1鼠标进入和离开enterEvent\leaveEvent 1.2鼠标按下释放和移动mousePressEvent\mouseReleaseEvent\mouseMoveEvent 1.3定时器事件timerEvent 1.4定时器类QTimer 1.5事件分发器event 1.6事件过滤器eventFilter 1.1鼠标进入和离开enterEvent\leaveEvent 事件&#x…

目录

1.1鼠标进入和离开enterEvent\leaveEvent

1.2鼠标按下释放和移动mousePressEvent\mouseReleaseEvent\mouseMoveEvent

1.3定时器事件timerEvent

1.4定时器类QTimer

1.5事件分发器event

 1.6事件过滤器eventFilter


1.1鼠标进入和离开enterEvent\leaveEvent

事件:

鼠标进入函数原型:

[virtual protected] void QWidget::enterEvent(QEvent* event);

鼠标离开函数原型:

[virtual protected] void QWidget::leaveEvent(QEvent* event);

举例:重写鼠标进入离开事件

void MyLable::enterEvent(QEvent *event)
{qDebug()<<"鼠标进入";
}void MyLable::leaveEvent(QEvent *event)
{qDebug()<<"鼠标离开";
}

1.2鼠标按下释放和移动mousePressEvent\mouseReleaseEvent\mouseMoveEvent

鼠标按下、释放是瞬间触发的,移动是一个持续性事件

 鼠标按下函数原型:

[virtual protected] void QWidget::mousePressEvent(QMouseEvent* event);

鼠标释放函数原型:

[virtual protected] void QWidget::mouseReleaseEvent(QMouseEvent* event);

鼠标移动函数原型: 

[virtual protected] void QWidget::mouseMoveEvent(QMouseEvent* event);

举例:

void MyLable::mousePressEvent(QMouseEvent *event)
{qDebug()<<"鼠标按下了";
}void MyLable::mouseReleaseEvent(QMouseEvent *event)
{qDebug()<<"鼠标松开了";
}void MyLable::mouseMoveEvent(QMouseEvent *event)
{qDebug()<<"鼠标移动了";
}

扩展1:鼠标按下,释放,移动时,分别打印鼠标相对于Label的x、y坐标

 QMouseEvent可以获取鼠标对应的信息

void MyLable::mousePressEvent(QMouseEvent *event)
{QString str=QString("x=%1,y=%2").arg(event->x()).arg(event->y());qDebug()<<str;qDebug()<<"鼠标按下了";
}void MyLable::mouseReleaseEvent(QMouseEvent *event)
{QString str=QString("x=%1,y=%2").arg(event->x()).arg(event->y());qDebug()<<str;qDebug()<<"鼠标松开了";
}void MyLable::mouseMoveEvent(QMouseEvent *event)
{QString str=QString("x=%1,y=%2").arg(event->x()).arg(event->y());qDebug()<<str;qDebug()<<"鼠标移动了";
}

扩展2:在MyLabel中鼠标只要移动,就会触发移动事件,不需要按下

将鼠标追踪效果设为true

MyLable::MyLable(QWidget *parent): QLabel{parent}
{this->setMouseTracking(true);
}

扩展3:鼠标左键按下时,才会触发相应内容

QMouseEvent对象的button()可以判断鼠标按下的是左键或右键

void MyLable::mousePressEvent(QMouseEvent *event)
{if(Qt::LeftButton==event->button()){QString str=QString("x=%1,y=%2").arg(event->x()).arg(event->y());qDebug()<<str;qDebug()<<"鼠标按下了";}
}void MyLable::mouseReleaseEvent(QMouseEvent *event)
{if(Qt::LeftButton==event->button()){QString str=QString("x=%1,y=%2").arg(event->x()).arg(event->y());qDebug()<<str;qDebug()<<"鼠标松开了";}
}void MyLable::mouseMoveEvent(QMouseEvent *event)
{if(Qt::LeftButton==event->button()){QString str=QString("x=%1,y=%2").arg(event->x()).arg(event->y());qDebug()<<str;qDebug()<<"鼠标移动了";}
}

1.3定时器事件timerEvent

需求:两个label,初始值都为1,第一个每隔一秒加一,第二个每隔一秒加二

class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//重写定时器事件void timerEvent(QTimerEvent *event);//声明两个定时器的唯一标识int id1;int id2;
private:Ui::Widget *ui;
};
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//1000毫秒,每隔一秒钟会触发timerEvent,startTimer会返回一个唯一标识this->id1=startTimer(1000);this->id2=startTimer(2000);
}void Widget::timerEvent(QTimerEvent *event)
{//QTimerEvent的timerId方法可以获得计时器的唯一标识if(event->timerId()==this->id1){static int num1=1;ui->label->setText(QString::number(num++));}if(event->timerId()==this->id2){static int num2=1;ui->label->setText(QString::number(num2++));}
}

startTimer——启动定时器,单位是毫秒,startTimer会返回一个int类型的唯一标识

1.4定时器类QTimer

 需求:一个label,初始值为1,每隔0.5秒加一;且有一个停止按钮,点击之后,label上的数字停止递增

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QTimer * timer=new QTimer(this);//每隔500毫秒发timeout的信号timer->start(500);connect(timer,&QTimer::timeout,[=]{static int num3=1;ui->label_3->setText(QString::number(num++));})connect(ui->btn_stop,&QPushButton::clicked,[=]{timer->stop();});
}

注意:

  • start——启动定时器,单位毫秒;超过时间会发timeout的信号
  • stop——停止计时器

1.5事件分发器event

需求:重写一个事件分发器,拦截鼠标按下事件

class MyLabel : public QLabel
{Q_OBJECT
public:explicit MyLabel(QWidget *parent = nullptr);void mousePressEvent(QMouseEvent *ev);bool event(QEvent *e);
signals:};
void MyLabel::mousePressEvent(QMouseEvent *ev)
{QString str=QString("鼠标按下了x=%1,y=%2").arg(ev->x()).arg(ev->y());qDebug()<<str;
}bool MyLabel::event(QEvent *e)
{if(e->type()==QEvent::MouseButtonPress){QMouseEvent* ev=static_cast<QMouseEvent*>(e);QString str=QString("event事件中鼠标按下了x=%1,y=%2").arg(ev->x()).arg(ev->y());qDebug()<<str;//标识拦截下鼠标按下事件return true;}//其他事件交给父类处理return QLabel::event(e);
}

 1.6事件过滤器eventFilter

时间过滤器函数原型:

virtual bool QObject::eventFilter(QObject* watched,QEvent* event);

若此事件是感兴趣的类型,返回true,自己进行处理;若不是,返回false,继续转发

事件过滤器使用步骤:

  1. 给控件安装过滤器installEventFilter
  2. 重写过滤器事件eventFilter
    //安装事件过滤器ui->label->installEventFilter(this);bool Widget::eventFilter(QObject *watched, QEvent *event){if(watched==ui->label){if(event->type()==QEvent::MouseButtonPress){QMouseEvent* ev=static_cast<QMouseEvent*>(event);QString str=QString("eventFilter事件中鼠标按下了x=%1,y=%2").arg(ev->x()).arg(ev->y());qDebug()<<str;//标识拦截下鼠标按下事件return true;}}//其他事件交给父类处理return QWidget::eventFilter(watched,event);}

http://www.hkea.cn/news/686093/

相关文章:

  • wordpress相册点击弹出框金华seo全网营销
  • 郑州手机网站建设搜狗网站收录提交入口
  • 清风网站建设抖音推广方式有哪些
  • 工作室网站开发广东网站seo营销
  • 广州正佳广场攻略深圳债务优化公司
  • 如何自己免费建网站seo网站有哪些
  • 南昌网站建设案例如何制作自己的链接
  • wordpress大流量专业的网站优化公司
  • 做进口零食批发网站百度站长管理平台
  • 网站栏目建设存在的问题关键词简谱
  • 网站备案怎么那么麻烦google chrome 网络浏览器
  • 小米手机做网站服务器nba东西部最新排名
  • 做写字楼用哪个网站更好郑州seo代理外包
  • 做网站 淘宝营销策划思路
  • 网页设计要用到什么软件聊城seo优化
  • 用wordpress做网站百度推广管理
  • 一个空间可以放两个网站吗html模板网站
  • 做试用网站的原理网站推广优化平台
  • 软件工程培训机构学费亚马逊seo什么意思
  • 做恶搞网站软件有哪些苏州seo怎么做
  • 怎么做微信小说网站企业网络营销策划方案
  • 网站后台上传图片失败百度下载免费安装最新版
  • 镇江做网站需要多少钱企业网站模板设计
  • 西安seo优化系统网页seo
  • 如何用网站模板做网站广州网络营销推广
  • 承德手机网站建设seo推广排名
  • wordpress块引用一个网站可以优化多少关键词
  • 360网站卖东西怎么做的无锡seo优化公司
  • 邢台人民网站百度视频推广怎么收费
  • 常州天启建设公司网站高端快速建站