zoukankan      html  css  js  c++  java
  • [Qt] 事件机制(三)

    在主窗口Widget中增加几个小功能

    1、点击左键,在左上角label中显示“haha”,点击右键,显示“lala”

    在widget.h中添加:

    1 #include <QMouseEvent>
    2 protected:
    3     void mousePressEvent(QMouseEvent *);

    在widget.cpp中添加:

    1 void Widget::mousePressEvent(QMouseEvent *ev){
    2     if(ev->button()==Qt::LeftButton){
    3         ui->label->setText("haha");
    4     }else if(ev->button()==Qt::RightButton){
    5         ui->label->setText("lala");
    6     }
    7 }

    2、在label中显示鼠标点击点的坐标

     只需对Widget::mousePressEvent()稍作修改:

    1 void Widget::mousePressEvent(QMouseEvent *ev){
    2     QPoint point=ev->pos();
    3     if(ev->button()==Qt::LeftButton){
    4         ui->label->setText(QString::asprintf("%d",point.x()));
    5     }else if(ev->button()==Qt::RightButton){
    6         ui->label->setText(QString::asprintf("%d",point.y()));
    7     }
    8 }

    3、鼠标位置坐标的实时显示

    修改widget.cpp:

     1 Widget::Widget(QWidget *parent) :
     2     QWidget(parent),
     3     ui(new Ui::Widget)
     4 {
     5     ui->setupUi(this);
     6     this->setMouseTracking(true);
     7 }
     8 
     9 Widget::~Widget()
    10 {
    11     delete ui;
    12 }
    13 
    14 void Widget::mouseMoveEvent(QMouseEvent *ev){
    15     QPoint point=ev->pos();
    16     ui->label->setText(QString::asprintf("坐标:%d %d",point.x(),point.y()));
    17 }
    • 第6行是设定实时追踪鼠标,如果不加,就要一边按着鼠标一边动坐标才有变化
    • 别忘了在widget.h中声明mouseMoveEvent()
  • 相关阅读:
    Servlet--j2e中文乱码解决
    python 通过ftplib 实现上传下载
    使用sqlyog将sql server 迁移到mysql
    c++
    二进制(signed or unsigned)补码
    sql 2012先分离迁移mdf mlf 文件到别的机器后附加 数据库成只读的修复方法
    events
    NoSQL文章
    程序员如何成功的假装在很努力的工作(转)
    如何成为强大的程序员(转)
  • 原文地址:https://www.cnblogs.com/cxc1357/p/11998935.html
Copyright © 2011-2022 走看看