一、概述
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点击信号。
标签:控件,鼠标,combobox,点击,添加,ui,include From: https://www.cnblogs.com/tgc-3/p/17495179.html