ui设计师界面combobox控件添加鼠标点击信号

发布时间 2023-06-20 23:45:54作者: 小人物1112227

一、概述

  combobox下拉框控件下拉后会显示预设好的选择内容,可是想要实现显示内容动态可变,点击的时候实时刷新到最新内容,就需要点击信号,但是qt本身没有实现这个点击信号。要实现这个功能本质方法是需要重写combobox的鼠标点击事件,这里介绍如何为ui设计师界面的combobox控件添加鼠标点击信号。

二、具体方法

  1:首先创建一个自定义的的mycombobox控件类,注意基类要选择QWidget,因为QCombobox的父类为QWidget。

 

 

  2:添加头文件  #include <QComboBox>  ,将继承类修改为QComboBox,重写鼠标事件并添加信号,直接看源代码

mycombobox.h

#ifndef MYCOMBOXBOX_H
#define MYCOMBOXBOX_H

#include <QObject>
#include <QComboBox>

class MyComboxBox : public QComboBox
{
    Q_OBJECT
public:
    explicit MyComboxBox(QWidget *parent = nullptr);


   
    void mousePressEvent(QMouseEvent *event);  //重写鼠标点击事件

signals:
    void clicked();        //添加点击信号

public slots:
};

#endif // MYCOMBOXBOX_H

  

mycombobox.c

#include "mycomboxbox.h"
#include <QComboBox>
#include <QMouseEvent>

MyComboxBox::MyComboxBox(QWidget *parent) : QComboBox(parent)
{

}


void MyComboxBox::mousePressEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)    //如果点击左键
    {
       emit clicked();  //发出clicked信号
    }

    QComboBox::mousePressEvent(event);  //将该事件传给父类处理,这句话很重要,如果没有,父类无法处理本来的点击事件

}

  

  3:将ui设计师界面的combobox控件提升为自定义的mycombobox控件。

  ①选中combobox控件,单击右键选择“提升为”,

   ②输入刚刚新建的类的类名,再点击添加

   ③选中上一步添加好的要提升的类,再点击提升

 

这时候就将原始的combobox控件提升为带clicked点击信号的自定义类了,之后在代码中可以调用clicked点击信号。