组合套件
??????? 本部分实现一个自定义的控件,在主界面里面添加自定义的控件,具体步骤如下。
??????? 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() << "鼠标左键按下!";
}
}
|