使用自定义label来实现此功能
其他控件可参照此例。
#include "customerqlabel.h" CustomerQlabel::CustomerQlabel(QWidget *parent, Qt::WindowFlags f): QLabel(parent,f) { } CustomerQlabel::CustomerQlabel(const QString &text, QWidget *parent, Qt::WindowFlags f): QLabel(text,parent,f) { } void CustomerQlabel::mouseReleaseEvent(QMouseEvent * ev) { Q_UNUSED(ev) emit clicked(); }
#ifndef CUSTOMERQLABEL_H #define CUSTOMERQLABEL_H #include <QLabel> class CustomerQlabel : public QLabel { Q_OBJECT public: explicit CustomerQlabel(QWidget *parent=0, Qt::WindowFlags f=0); explicit CustomerQlabel(const QString &text, QWidget *parent=0, Qt::WindowFlags f=0); protected: /*! 由Qt自己调用的鼠标事件处理函数,在此发射clicked信号 */ virtual void mouseReleaseEvent(QMouseEvent * ev); signals: void clicked(void); }; #endif // CUSTOMERQLABEL_H