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

组合套件

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

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

         Qt学习之组合套件及鼠标事件_第1张图片

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

 Qt学习之组合套件及鼠标事件_第2张图片

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

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

Qt学习之组合套件及鼠标事件_第3张图片

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

Qt学习之组合套件及鼠标事件_第4张图片

 鼠标事件

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

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

Qt学习之组合套件及鼠标事件_第5张图片

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

Qt学习之组合套件及鼠标事件_第6张图片

         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() << "鼠标左键按下!";
    }
}

你可能感兴趣的:(Qt学习,qt,组合套件,鼠标事件)