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

psd做模板下载网站外贸网站注册

psd做模板下载网站,外贸网站注册,家具公司网站模板下载,景区网站建设案例目录 引出定时器事件QTimerEventQTimer 事件的分发事件过滤器 总结QT中的鼠标事件定义QLable的鼠标进入离开事件提升为myLabel重写QLabel的函数鼠标的事件鼠标的左中右键枚举鼠标多事件获取和鼠标移动鼠标追踪 QT中的信号和槽自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.… 目录 引出定时器事件QTimerEventQTimer 事件的分发事件过滤器 总结QT中的鼠标事件定义QLable的鼠标进入离开事件提升为myLabel重写QLabel的函数鼠标的事件鼠标的左中右键枚举鼠标多事件获取和鼠标移动鼠标追踪 QT中的信号和槽自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式返回值mutable修饰案例 引出 QT学习6——QT中的定时器事件两种实现方式事件的分发event事件过滤器 定时器事件 QTimerEvent #ifndef WIDGET_H #define WIDGET_H#include QWidgetQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();// 重写定时器事件void timerEvent(QTimerEvent *);int id1; // 定时器1的唯一标识int id2; // 定时器2的唯一标识private:Ui::Widget *ui; }; #endif // WIDGET_H如何定义多个定义器事件 #include widget.h #include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 启动定时器// 参数1 间隔 单位 毫秒id1 startTimer(1000);id2 startTimer(2000); }void Widget::timerEvent(QTimerEvent * ev) {if(ev-timerId()id1){static int num 1;// label1 每间隔1秒ui-label_2-setText(QString::number(num));}// label2 每间隔2sif(ev-timerId()id2){static int num2 1;ui-label_3-setText(QString::number(num2));}// label3 每间隔3s}Widget::~Widget() {delete ui; }QTimer 定时器实现的另一种方式实例化定时器QTimer 然后加到对象树上 进行定时信号的发送和处理 #include widget.h #include ui_widget.h #include QTimer // 定时器的类Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 启动定时器// 参数1 间隔 单位 毫秒id1 startTimer(1000);id2 startTimer(2000);// 定时器的第二种方式实例化加到对象树上QTimer *timer new QTimer(this);// 启动定时器timer-start(500); // 每隔500msconnect(timer,QTimer::timeout,[](){static int num 1;ui-label_4-setText(QString::number(num));});// 点击暂停按钮停止定时器connect(ui-btnStop,QPushButton::clicked,[](){timer-stop();});}void Widget::timerEvent(QTimerEvent * ev) {if(ev-timerId()id1){static int num 1;// label1 每间隔1秒ui-label_2-setText(QString::number(num));}// label2 每间隔2sif(ev-timerId()id2){static int num2 1;ui-label_3-setText(QString::number(num2));}// label3 每间隔3s}Widget::~Widget() {delete ui; }事件的分发 通过重写event事件分发器拦截鼠标按下的的事件 事件的枚举类型 静态类型转换方法 鼠标按下的事件拦截自己处理返回True 其他事件交给父类进行处理默认处理 bool myLabel::event(QEvent *e) {// 如果是鼠标按下在event事件分发中做拦截操作if(e-type()QEvent::MouseButtonPress){QString str1 QString(鼠标按下了,在event事件分发中处理);qDebug() str1;// 需要进行类型转换QMouseEvent * ev static_castQMouseEvent *(e);QString str QString(鼠标按下了x%1y%2; global坐标为x%3y%4).arg(ev-x()).arg(ev-y()).arg(ev-globalX()).arg(ev-globalY());qDebug() str;return true; // 代表用户自己处理不向下分发}// 其他事件交给父类处理默认处理return QLabel::event(e); } 事件过滤器 可以在event之前再做一次高级的拦截 步骤1.给label1安装事件过滤器 步骤二重写事件过滤器的事件 这里有两个参数obj 和 e一个用于判断控件另一个用来判断事件 #include widget.h #include ui_widget.h #include QTimer // 定时器的类 #include QDebug #include QMouseEventWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 启动定时器// 参数1 间隔 单位 毫秒id1 startTimer(1000);id2 startTimer(2000);// 定时器的第二种方式实例化加到对象树上QTimer *timer new QTimer(this);// 启动定时器timer-start(500); // 每隔500msconnect(timer,QTimer::timeout,[](){static int num 1;ui-label_4-setText(QString::number(num));});// 点击暂停按钮停止定时器connect(ui-btnStop,QPushButton::clicked,[](){timer-stop();});}void Widget::timerEvent(QTimerEvent * ev) {if(ev-timerId()id1){static int num 1;// label1 每间隔1秒ui-label_2-setText(QString::number(num));}// label2 每间隔2sif(ev-timerId()id2){static int num2 1;ui-label_3-setText(QString::number(num2));}// 给label1安装事件过滤器// 步骤1安装事件的过滤器ui-label-installEventFilter(this); }bool Widget::eventFilter(QObject * obj, QEvent * e){if(obj ui-label){if(e-type() QEvent::MouseButtonPress){QMouseEvent * ev static_castQMouseEvent *(e);QString str QString(事件过滤器鼠标按下了x%1y%2; global坐标为x%3y%4).arg(ev-x()).arg(ev-y()).arg(ev-globalX()).arg(ev-globalY());qDebug() str;return true;}}// 其他默认处理return QWidget::eventFilter(obj,e);}Widget::~Widget() {delete ui; } 总结 QT学习6——QT中的定时器事件两种实现方式事件的分发event事件过滤器 QT中的鼠标事件 定义QLable的鼠标进入离开事件 注意这里的QWidget后面要改成QLabel #include mylabel.h #include QDebugmyLabel::myLabel(QWidget *parent) : QLabel(parent) { }// 鼠标进入 void myLabel::enterEvent(QEvent *event) {qDebug() 鼠标进入了; }// 鼠标离开 void myLabel::leaveEvent(QEvent *) {qDebug() 鼠标离开了; } 提升为myLabel 重写QLabel的函数 鼠标的事件 基于控件的 鼠标的左中右键枚举 鼠标多事件获取和鼠标移动 头文件 #ifndef MYLABEL_H #define MYLABEL_H#include QLabelclass myLabel : public QLabel {Q_OBJECT public:explicit myLabel(QWidget *parent nullptr);// 鼠标进入void enterEvent(QEvent *event);// 鼠标离开void leaveEvent(QEvent *);// 鼠标放下和释放virtual void mousePressEvent(QMouseEvent *ev);virtual void mouseReleaseEvent(QMouseEvent *ev);// 鼠标的移动virtual void mouseMoveEvent(QMouseEvent *ev);signals:};#endif // MYLABEL_H cpp文件 #include mylabel.h #include QDebug #include QMouseEventmyLabel::myLabel(QWidget *parent) : QLabel(parent) { }// 鼠标进入 void myLabel::enterEvent(QEvent *event) { // qDebug() 鼠标进入了; }// 鼠标离开 void myLabel::leaveEvent(QEvent *) { // qDebug() 鼠标离开了; }// 鼠标放下和释放 void myLabel::mousePressEvent(QMouseEvent *ev) {// 鼠标左键按下打印if(ev-button() Qt::LeftButton){QString str QString(鼠标按下了x%1y%2; global坐标为x%3y%4).arg(ev-x()).arg(ev-y()).arg(ev-globalX()).arg(ev-globalY());qDebug() str;}} void myLabel::mouseReleaseEvent(QMouseEvent *ev) {qDebug() 鼠标释放; }// 鼠标的移动 void myLabel::mouseMoveEvent(QMouseEvent *ev) {if(ev-buttons() Qt::LeftButton){qDebug() 鼠标移动;} }鼠标追踪 QT中的信号和槽 自定义信号和槽 1.自定义信号 写到signals下 返回void 需要声明不需要实现 可以有参数可以重戟 2.自定义槽 返回void 需要声明也需要实现 可以有参数可以重载 写到public slot下或者public或者全局函数 3.建立连接 // 老师饿了学生请吃饭 connect(te,Teacher::hungry,st,Student::treat);4.进行触发 自定义信号重载 当自定义信号和槽出现重载 8.1 需要利用还数指针明确指向函数的地址· 8.2void(Teacher::tsignal )QString )Teacher::hungry; 8.3 QString转成char * 8.3.1.ToUtf80转为QByteArray 8.3.2.Data0转为Char * 8.4信号可以连接信号 8.5断开信号disconnect 带参数的 void (Teacher::*teacherSignal)(QString) Teacher::hungry;void (Student::*StudentSlot)(QString) Student::treat;void Student::treat(QString foodName){// QString - char * 先转成QByteArray(.toUtf8()) 再转成Char* ()qDebug() 请老师吃。。。 foodName.toUtf8().data(); }按钮触发 // 用一个按钮调用下课QPushButton *btn new QPushButton(下课了,this);// 重置窗口daxiaothis-resize(600,400);connect(btn,QPushButton::clicked,this,Widget::classIsOver);信号触发信号 // 无参的信号和槽连接void (Teacher::*teacherSignal2)(void) Teacher::hungry;void (Student::*StudentSlot2)(void) Student::treat;connect(te,teacherSignal2,st,StudentSlot2);// 信号连接信号connect(btn,QPushButton::clicked,te,teacherSignal2);断开信号disconnect 拓展 1、信号是可以连接信号 2、一个信号可以连接多个槽函数 3、多个信号可以连接同一个糟函数 4、信号和槽函数的参数必须类型一一对应 5、信号和槽的参数个数是不是要一致信号的参数个数可以多余槽函数的参数个数 connect(信号的发送者发送的信号signal信号)信号接受者槽函数SLOT) 优点参数直观 缺点编译器不会检测爸数类型 lambda表达式 [](){btn-setText(aaa);}();返回值 int ret []()-int{return 1000;}();qDebug() ret ret;mutable修饰 QPushButton *myBtn1 new QPushButton(this);QPushButton *myBtn2 new QPushButton(this);myBtn1-move(100,100);int m 10;connect(myBtn1,QPushButton::clicked,this,[m]()mutable {m10010;qDebug() m;});connect(myBtn2,QPushButton::clicked,this,[](){qDebug()m;});qDebug() m;案例 QPushButton * btnClose new QPushButton;btnClose-setText(close);btnClose-move(100,0);btnClose-setParent(this);connect(btnClose,QPushButton::clicked,this,[](){btnClose-setText(关闭);emit te-hungry(娃哈哈); // this-close();});
http://www.hkea.cn/news/14360288/

相关文章:

  • 北京网站建设公司艺唯思青岛企业展厅设计公司
  • 编程猫少儿编程网站珠海做网站哪家好
  • 网站开发制作的流程有哪些wordpress本地网站上传
  • 青海响应式网站建设网站搭建服务器
  • 自助建站工具软件邵阳县网站建设公司沙河网站建设公司
  • 百度网站排名查询网站建设教程浩森宇特
  • 杭州网站开发 网站建设wordpress怎么改主页背景
  • 做那种英文网站有流量这2个代码 找做网站的 安装一下
  • 在百度上做个网站多少合适网站设计项目总结
  • 建设银行网站怎么打印明细百度网盘做视频网站
  • 一个小型网站设计黄山公司做网站
  • 专做农产品的网站成都flash互动网站开发
  • 淄博企业网站建设赣州做网站的公司
  • 外贸网站支付接口做网站后台需要什么
  • 建设部网站资质sae wordpress 安装主题
  • 网站数据比较logo免费生成网站
  • 建网站步骤wordpress默认图像不显示
  • 简述制作网站的流程福州建网站 做网页
  • 深圳做网站的网哪个网站可以做教师招聘题目
  • 清晰化网站seo优化教程视频
  • 狠狠做网站哈尔滨的建设信息网站
  • 网站制作详细报价表福田附近网站建设
  • 有啥网站是专做时尚穿搭微信做模板下载网站有哪些
  • 新乡营销型网站建设做视频网站投入要多少
  • 黄冈网站推广软件下载做最最优秀的视频网站有哪些
  • 只做正品的网站海南省海口市网站建设
  • 导购类网站怎么做的烫画图案设计网站
  • 建站平台工具制作公司宣传册
  • 找兼职工作在家做正规网站网络游戏美术设计专业
  • 西宁高端网站制作公司wordpress 砍价插件