1.新建一个类
2.添加头文件和重新构造函数
#include <QComboBox>
MyComboBox::MyComboBox(QWidget *parent) : QComboBox(parent)
{
}
3.重写事件
4.定义一个信号
当鼠标左键被按下后信号被释放
signals:
void on_ComboBox_clicked();
void MyComboBox::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::LeftButton){//鼠标左键被按下
emit on_ComboBox_clicked();
}
QComboBox::mousePressEvent(e);//将信号传递下去,
}
5.将comboBox提升为MycomboBox
6.主程序头文件添加mycomboBox的头文件
7.定义一个槽函数用于刷新时要做的事情
void mComboBox_refresh();
8.在主程序的构造函数中关联槽函数
connect(ui->comboBoxChildren,&MyComboBox::on_ComboBox_clicked,this,&Widget::mComboBox_refresh);
comboBoxChildren为提升的comboBox的名字
全部代码
功能:当点击comboBox之后会输出6666
mycomboBox.h
#ifndef MYCOMBOBOX_H
#define MYCOMBOBOX_H
#include <QComboBox>
#include <QWidget>
class MyComboBox : public QComboBox
{
Q_OBJECT
public:
MyComboBox(QWidget *parent);
protected:
void mousePressEvent(QMouseEvent *e) override;
signals:
void on_ComboBox_clicked();
};
#endif // MYCOMBOBOX_H
mycomboBox.cpp
#include "mycombobox.h"
#include <QMouseEvent>
MyComboBox::MyComboBox(QWidget *parent) : QComboBox(parent)
{
}
void MyComboBox::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::LeftButton){//鼠标左键被按下
emit on_ComboBox_clicked();
}
QComboBox::mousePressEvent(e);//将信号传递下去,
}
widget.h
public slots:
void mComboBox_refresh();
widget.cpp
//槽函数绑定
connect(ui->comboBoxChildren,&MyComboBox::on_ComboBox_clicked,this,&Widget::mComboBox_refresh);
void Widget::mComboBox_refresh()
{
qDebug()<<"6666";
}
注意:
如果遇到报错可试试清理项目之后在进行运行