2010-07-03 5 views

risposta

5

È possibile chiamare la funzione click di questo pulsante. Emetterà il segnale cliccato.

0

I segnali sono implementati internamente come funzioni membro protette in C++, quindi consiglierei di non farlo. (Sono pubblici in Qt 5, sebbene non sia ancora consigliato come soluzione generale.)

0

Qt, tramite il moc, implementa la parola chiave emit, che consente di emettere segnali attraverso la codifica.

Se la classe che si sta utilizzando non fornisce un metodo per emettere alcun segnale, è possibile eseguirne la sottoclasse e implementare una funzione autonoma. Ma devo dire che non l'avevo mai fatto per segnali "normali". Lo ha fatto solo quando ho definito i miei segnali in un'estensione di classe.

3

Invece di emette il segnale da soli e collegandolo allo slot, Perchè non si chiamano slot direttamente? Gli slot sono come le altre funzioni C++, nel senso che puoi chiamarlo direttamente. Non vedo alcun motivo per cui hai emesso un segnale predefinito (come clicked()). Basta chiamare direttamente lo slot.

+1

A volte si desidera accedere al mittente() nello slot. Questo non funziona quando si richiama direttamente lo slot – Ben

0

ad emettere un segnale basta scrivere

emettono signalName (lista param);

#include <QObject> 

class myClass : public QObject 
{ 
    Q_OBJECT 

public: 
    myClass (QObject *parent = 0) : QObject(parent) { } 
    void foo(); 

signals: 
    void mySignal(int param); 
}; 

void myClass::foo() { emit mySignal(5); } 

saperne di più su http://doc.qt.io/qt-4.8/signalsandslots.html

è anche possibile collegare un segnale ad un altro segnale che consente il collegamento mysignal ai pulsanti cliccato del segnale e quando il segnale è emited il segnale cliccato sarà anche emited vedere http://doc.qt.io/qt-4.8/qobject.html#connect

0

se si imposta un'azione sul pulsante, è anche possibile chiamare semplicemente l'azione da attivare. Basta usare action_of_the_button->trigger();!

Problemi correlati