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

大连做网站建设wordpress data

大连做网站建设,wordpress data,矿坛器材友情交换,asp做的网站asp源代码目录 1. Qt事件介绍#xff1a; 2. 事件的处理 示例1#xff1a;鼠标进入(enterEvent)与离开事件(leaveEvent) 示例2#xff1a;鼠标点击事件(mousePressEvent) 示例3#xff1a;鼠标移动事件(mouseMoveEvent) 3. 按键事件 4. 定时器 5. 窗口事件 1. Qt事件介绍 2. 事件的处理  示例1鼠标进入(enterEvent)与离开事件(leaveEvent) 示例2鼠标点击事件(mousePressEvent) 示例3鼠标移动事件(mouseMoveEvent) 3. 按键事件 4. 定时器 5. 窗口事件 1. Qt事件介绍 事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用⼀个对象来表示⼀个事件。所 有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身在不同的时刻发出的。当用户按下鼠标、敲下键盘或者是窗口需要重新绘制的时候都会发出⼀个相应的事件。⼀些事件是在用户操作时发出如键盘事件、鼠标事件等另⼀些事件则是由系统本身自动发出如定时器事件。常见的Qt事件如下 2. 事件的处理  事件处理⼀般常用的方法为重写相关的Event函数。 示例1鼠标进入(enterEvent)与离开事件(leaveEvent) 处理鼠标进入与离开事件 1.新建Qt项目基类选择QWidget同时勾选UI界面文件 2. 在ui文件添加label控件 3. 创建QLabel的子类重写enterEvent和leaveEvent ① ② 此时项目多出两个新文件 4. 为了方便给label指定父对象调整一下构造函数 5.函数重写在label.h中 注意重写函数时要确保函数名字和参数列表完全一致 谨防拼写错误为避免错误可以在帮助文档查找目标函数复制粘贴即可 class Label : public QLabel {Q_OBJECT public:Label(QWidget* parent);void enterEvent(QEvent *event);void leaveEvent(QEvent *event); }; 6. 在label.cpp重写enterEvent与leaveEvent方法 按alt回车键转到函数定义 void Label::enterEvent(QEvent *event) {(void) event;//躲避编译器警告qDebug() enterEvent; }void Label::leaveEvent(QEvent *event) {(void) event;//躲避编译器警告qDebug() leaveEvent; } 此时执行程序其实并没有起到效果这是因为此时界面上的label并不是我们定义的Label类的实例其仍然是系统的QLabel创建的实例。 那么问题来了此时也只能从界面上拖动QLabel来创建实例呀如何才能使界面上的label是来自我们自己定义的Label类呢步骤继续 7. 回到ui界面 效果如图 学到了这里我们再来回顾一下在Qt入门3——常用控件1中所写的“给女神表白的程序”当时鼠标点击的时候按钮才会移动现在我希望鼠标进入按钮按钮就随机移动代码如下 1.按照如上步骤添加一个Button类再将“拒绝”按钮提升为Button类 2.重写enterEvent #include button.hButton::Button(QWidget* parent) : QPushButton(parent) {srand(time(0)); }void Button::enterEvent(QEvent *event) {(void) event;//获取父窗口QWidget* parentwidget this-parentWidget();//获取父窗口可用区域的大小int width parentwidget-geometry().width();int height parentwidget-geometry().height();int x rand() % width;int y rand() % height;this-move(x,y); } 效果如图按钮还没来得及点击就跑了 示例2鼠标点击事件(mousePressEvent) 当鼠标点击时获取相应的坐标值 1. 创建两个label 2. 按照示例1的7将下面的label提升。 3. 在label.h中创建一个私有变量QString类型的私有变量coordText 4. 重写mousePressEvent函数详细步骤参考示例1 void Label::mousePressEvent(QMouseEvent *ev) {if(ev-button() Qt::LeftButton){coordText QString(此处以label为准的坐标为(%1, %2)).arg(ev-x()).arg(ev-y());}else if(ev-button() Qt::RightButton){coordText QString(此处以主窗口为准的坐标(%1, %2)).arg(ev-globalX()).arg(ev-globalY());}this-setText(coordText); }效果如图 鼠标释放事件(mouseReleaseEvent)与鼠标双击事件(mouseDoubleClickEvent)与示例2相同不过是需要重写的函数不同罢了此处不再演示。 示例3鼠标移动事件(mouseMoveEvent) 此示例让鼠标移动事件发生在整个窗口所以不再自定义类。 1.在ui界面创建一个label来显示鼠标移动的坐标 2.重写mouseMoveEvent void Widget::mouseMoveEvent(QMouseEvent *event) {ui-label-setText(( QString::number(event-x()) , QString::number(event-y()) )); } 3.  此时运行程序不会有任何反应这是因为鼠标移动不同于鼠标按下和释放随便移动一下鼠标就会产生大量的鼠标移动事件。当进行捕获事件时尤其是执行一些复杂的逻辑时程序的负担会很重可能会产生卡顿的情况。所以默认情况下Qt不会对鼠标移动事件进行跟踪除非显式地告诉Qt //在构造函数中将setMouseTracking设为true this-setMouseTracking(true); 效果如图 示例4鼠标滚轮滑动事件(wheelEvent) 1.在ui界面创建一个label来显示鼠标移动的坐标 2.重写wheelEvent void Widget::wheelEvent(QWheelEvent *event) {//delta()获取到这次事件鼠标滚轮滚动了多远ui-label-setText(QString::number(event-delta())); }效果如图滚动一次为120像素 3. 按键事件 Qt中的按键事件是通过QKeyEvent类来实现的。当键盘上的按键被按下或者被释放时键盘事件便会触发。 可以在Qt帮助文档中查看QKeyEvent类 组合按键 示例 void Widget::keyPressEvent(QKeyEvent *event) {//用label显示按下的按键对应的valueui-label-setText(QString::number(event-key()));//用label_2显示按下的单个按键if(event-key() Qt::Key_A){ui-label_2-setText(按下了A键);}//用label_3显示按下的组合按键if(event-key() Qt::Key_A event-modifiers() Qt::ControlModifier){ui-label_3-setText(按下了ctrlA键);} } 效果如图 4. 定时器 Qt 中在进行窗口程序的处理过程中经常要周期性的执行某些操作或者制作一些动画效果使用定时器就可以实现。所谓定时器就是在间隔一定时间后去执行某一个任务。 Qt中的定时器分为QTimerEvent和QTimer这2个类。 QTimerEvent类用来描述一个定时器事件。在使用时需要通过startTimer()函数来开启一个定时器这个函数需要输入一个以毫秒为单位的整数作为参数来表明设定的时间它返回的整型值代表 这个定时器。当定时器溢出时即定时时间到达就可以在timerEvent()函数中获取该定时器的编号来进行相关操作 QTimer类来实现⼀个定时器它提供了更高层次的编程接口如可以使用信号和槽还可以设置只运行一次的定时器。 示例 1.ui界面创建定时器 2. 重写timerEvent Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);//开启定时器事件//此处timerId是一个定时器的身份标识timerId this-startTimer(1000);//timeId为此类的私有变量 }void Widget::timerEvent(QTimerEvent *event) {//如果一个程序中存在多个定时器startTimer创建的定时器此时每个定时器都会触发timerEvent函数//先判断这次触发是否是我们想要的定时器触发的if(event-timerId() ! this-timerId){//如果不是我们的定时器触发的就直接忽略//当前程序中只有这一个定时器return;}int value ui-lcdNumber-intValue();if(value 0){//停止定时器this-killTimer(this-timerId);return;}value - 1;ui-lcdNumber-display(value); } 效果如图 5. 窗口事件 窗口事件有窗口移动事件moveEvent和窗口大小改变事件resizeEvent。 示例 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);QVBoxLayout* layout new QVBoxLayout();layout-addWidget(ui-label);layout-addWidget(ui-label_2);this-setLayout(layout); }Widget::~Widget() {delete ui; }void Widget::moveEvent(QMoveEvent *event) {QPoint pos event-pos();QString text QString(窗口现在的坐标为(%1,%2)).arg(pos.x()).arg(pos.y());ui-label-setText(text); }void Widget::resizeEvent(QResizeEvent *event) {QSize size event-size();QString text QString(窗口现在的长度为%1,宽度为%2).arg(size.width()).arg(size.height());ui-label_2-setText(text); }
http://www.w-s-a.com/news/421014/

相关文章:

  • 百度怎样建设网站盐城公司网站建设
  • 站长工具国产2023网站制作 商务
  • 网络新闻专题做的最好的网站杭州网站设计建设公司
  • 电商网站界面设计流程ps培训班一般学费多少钱
  • 西安网站运营上海闵行区网站制作公司
  • 宁波网站推广代运营长链接转化成短链接工具
  • 小企业如何建网站怎么自己制作app
  • 苏州品牌网站制作公司宁波建设工程有限公司
  • 合肥网站建设zgkr互联网创业好项目
  • 哪里学网站建设与管理云落wordpress
  • 网站建设意见做网站涉及到哪些
  • 网站导航栏原型图怎么做怎么样创建一个网站
  • 遨游建站金融网站建站
  • cms企业网站模板上海网站开发平台
  • 贵阳网站建设搜q479185700网站团队建设
  • 电商网站建设 教学总结蚌埠市住房建设部网站
  • 深圳罗湖企业网站发稿类别是什么
  • 做网站基本语言企业应用软件开发
  • 网站建设与运营 市场分析影视小程序搭建
  • vs 团队网站开发中铁建设门户网登录咋进不去了
  • 快速网站建设公司哪家好优秀的网站建设
  • 网站开发的自适应wordpress搜索词结果按文章标题
  • 微网站是用什么开发的wordpress中英文主题
  • 纯静态网站怎么做淄博seo开发
  • 江西新农村建设权威网站盐步网站制作
  • 网站ui设计例子怎么做打鱼网站
  • 在1688做公司网站wordpress category
  • 单页面 网站 模板网站代理公司
  • 手机网站底部电话代码网站后台点击添加图片没有反应
  • 龙岩建设局网站声明自学制作网站难不难