title: Q_EMIT not working from connected slot, only with QTimer slot
body: <p>I am trying to emit a signal, which works if the slot if hooked up to a <code>QTimer</code>. However if the slot is hooked up to a <code>QPushButton</code> for example, it doesn't work. For example, I have a run() function that it connected to a 1 second QTimer. The <code>run()</code> function contains <code>Q_EMIT textChanged("Test")</code>  This signal works as expected. However, if I have a QPushButton connected to a slot, which also contains <code>Q_EMIT textChanged("Test")</code> nothing happens...why is this???</p>
  
  <pre><code>#include &lt;QApplication&gt;
  #include &lt;QVBoxLayout&gt;
  #include &lt;QPlainTextEdit&gt;
  #include &lt;QTabWidget&gt;
  #include &lt;QTimer&gt;
  #include &lt;QPushButton&gt;
  
  class Counter : public QWidget
  {
     Q_OBJECT
  public:
     explicit Counter(QWidget *parent = 0) : QWidget(parent) {
        QTimer *timer = new QTimer(this);
        connect(timer, SIGNAL(timeout()), SLOT(run()));
        timer-&gt;start(1000);
  
        QVBoxLayout *layout = new QVBoxLayout(this);
        QPushButton *OK = new QPushButton("OK");
        connect(OK, SIGNAL(clicked()), SLOT(OKalarmLimits()));
        layout-&gt;addWidget(OK);
     }
     Q_SIGNAL void textChanged(const QString &amp;text);
     Q_SLOT void run() { Q_EMIT textChanged("Run - Counter"); }
     Q_SLOT void OKalarmLimits() { Q_EMIT textChanged("Button Clicked"); }
  };
  
  class MainWindow : public QWidget {
     Q_OBJECT
     QPlainTextEdit *box;
  public:
     explicit MainWindow(QWidget *parent = 0) : QWidget(parent) {
        QVBoxLayout * layout = new QVBoxLayout(this);
  
        box = new QPlainTextEdit();
        box-&gt;setMaximumHeight(400);
        box-&gt;setMinimumWidth(400);
        layout-&gt;addWidget(box);
  
        QTabWidget *tabWidget = new QTabWidget;
        tabWidget-&gt;addTab(new Counter(), tr("Counter"));
        layout-&gt;addWidget(tabWidget);
  
        QTimer *timer = new QTimer(this);
        connect(timer, SIGNAL(timeout()), SLOT(run()));
        timer-&gt;start(1000);
     }
     Q_SLOT void updateWidgets(const QString &amp;t) { box-&gt;appendPlainText(t); }
     Q_SLOT void run() { box-&gt;appendPlainText("Run - Window"); }
  };
  
  int main(int argc, char *argv[])
  {
     QApplication a(argc, argv);
     MainWindow s;
     Counter m;
     s.show();
     s.connect(&amp;m, SIGNAL(textChanged(QString)), SLOT(updateWidgets(QString)));
     return a.exec();
  }
  
  #include "main.moc"
  </code></pre>