Question: I'm new in Qt and have a question.

I have `QLabel` and `QLineEdit` objects, and when `QLabel` text is clicked on, I want to set this text in `QLineEdit`.

Also I have read that `QLabel` has not clicked signal.

Can you explain how can I do this and write code for me ?!

Answer: 
A simple way to accomplish that, without a need for any subclassing, is a signal source that monitors the events on some object and emits relevant signals:

```
// main.cpp - this is a single-file example
#include <QtWidgets>

class MouseButtonSignaler : public QObject {
  Q_OBJECT
  bool eventFilter(QObject * obj, QEvent * ev) Q_DECL_OVERRIDE {
    if ((ev->type() == QEvent::MouseButtonPress
        || ev->type() == QEvent::MouseButtonRelease
        || ev->type() == QEvent::MouseButtonDblClick)
        && obj->isWidgetType())
      emit mouseButtonEvent(static_cast<QWidget*>(obj), 
                            static_cast<QMouseEvent*>(ev));
    return false;
  }
public:
  Q_SIGNAL void mouseButtonEvent(QWidget *, QMouseEvent *);
  MouseButtonSignaler(QObject * parent = 0) : QObject(parent) {}
  void installOn(QWidget * widget) {
    widget->installEventFilter(this);
  }
};

```

The `emit` keyword is an empty macro, Qt defines it as follows:

```
#define emit

```

It is for use by humans as a documentation aid prefix only, the compiler and `moc` ignore it. As a documentation aid, it means: *the following method call is a signal emission*. The signals are simply methods whose implementation is generated for you by `moc` - that's why we have to `#include "main.moc"` below to include all the implementations that `moc` has generated for the object class(es) in this file. There's otherwise nothing special or magical to a signal. In this example, you could look in the build folder for a file called `main.moc` and see the implementation (definition) of `void MouseButtonSignaler::mouseButtonEvent( .. )`.

You can then install such a signaler on any number of widgets, such as a `QLabel`:

```
int main(int argc, char ** argv) {
  QApplication app(argc, argv);
  MouseButtonSignaler signaler;
  QWidget w;
  QVBoxLayout layout(&w);
  QLabel label("text");
  QLineEdit edit;
  layout.addWidget(&label);
  layout.addWidget(&edit);
  signaler.installOn(&label);
  QObject::connect(&signaler, &MouseButtonSignaler::mouseButtonEvent, 
    [&label, &edit](QWidget*, QMouseEvent * event) {
    if (event->type() == QEvent::MouseButtonPress)
      edit.setText(label.text());
  });
  w.show();
  return app.exec();
}

#include "main.moc"

```
In the above example the header needs Q\_OBJECT:

class YourLabelClass : public QLabel{

Q\_OBJECT

signals: