Qt学习之组合套件及鼠标事件

组合套件

        本部分实现一个自定义的控件,在主界面里面添加自定义的控件,具体步骤如下。

        1、首先在原本的项目中创建一个设计师界面类,如下图

         

         2、添加成功之后项目会增加三个文件,如下:

 

        3、将在 mydfine.ui 界面编辑类中创建自己的组合套件,创建一个简单的套件如下:

        4、将自定义套件嵌在主界面里面,需添先加一个控件,然后提示该控件自定义控件类(提升的控件类必须为提升类的子类),如下图:

         5、设定自定义控件中的两个子控件槽函数,实现控件相互的关联,如下图:

 鼠标事件

         该部分主要定义一个自定义的类去实现系统的控件里的部分功能。其实也就是将系统的控件提升为自己定义的类,注意:自定义类必须去继承要提升的控件类,否则控件提升会失败。具体步骤如下:

        1、在主界面里添加一个控件(GroupBox),如下图:

        2、实现将:鼠标进入空间内时设置鼠标其它形状,出空间时显示添加相应的操作。需要定义一个自定义类实现对应操作函数,然后将该控件提升为自定义类控件。需给工程添加一个hpp文件。如下图:

         3、cpp实现的代码如下:

void myGroupClass::enterEvent(QEvent *event)
{
    qDebug() << "鼠标进入事件" << event->type();

    // 设置进入空间设置鼠标形状
    QWidget::setCursor(QCursor(Qt::CrossCursor));
}

void myGroupClass::leaveEvent(QEvent *event)
{
     qDebug() << "鼠标出去事件" << event->type();
}
void myGroupClass::mouseMoveEvent(QMouseEvent *event)
{
    // 此时调用buttons函数,移动是一个过程(有可能左右键同时按下)
    if(event->buttons() & Qt::LeftButton)
    {
        QString slog = QString("鼠标移动: x=%1, y=%2, glx=%3, gly=%4").
                arg(event->x()).arg(event->y()).arg(event->globalX()).arg(event->globalY());
        qDebug() << slog;
    }
}

void myGroupClass::mousePressEvent(QMouseEvent *event)
{
    // 只有鼠标左键按下 才打印
    if(event->button() == Qt::LeftButton)
    {
        qDebug() << "鼠标左键按下!";
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值