2010-07-03 7 views

Respuesta

5

Puede llamar a la función de ese otro botón click. Emitirá la señal de clic.

0

Las señales se implementan internamente como funciones de miembro protegidas en C++, por lo que le aconsejo que no lo haga. (Son públicos en Qt 5, aunque aún no se recomiendan como una solución general.)

0

Qt, a través del moc, implementar la palabra clave emit, que le permite emitir señales a través de la codificación.

Si la clase que está utilizando no proporciona un método para emitir alguna señal, puede crear una subclase e implementar una función que lo haga usted mismo. Pero debo decir que nunca había hecho esto por señales "normales". Solo lo hice cuando definí mis propias señales en alguna extensión de clase.

3

En lugar de que emite la señal por sí mismo y conectarlo a la ranura, Por qué no puedes llamar a la ranura directamente? Las máquinas tragamonedas son como otras funciones de C++, en el sentido de que puedes llamarlo directamente. No veo ningún motivo por el que haya emitido una señal predefinida (como clicked()). Simplemente llame a su ranura directamente.

+1

A veces le gustaría acceder al remitente() en la ranura. Eso no funciona al invocar la ranura directamente – Ben

0

para emitir una señal que acaba de escribir

emiten 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); } 

Ver más en http://doc.qt.io/qt-4.8/signalsandslots.html

también puede conectar una señal a otra señal para que pueda conectarse mysignal a los botones de clic señal y cuando se emited su señal también se emited la señal clicked ver http://doc.qt.io/qt-4.8/qobject.html#connect

0

si establece una acción para el botón, también puede simplemente llamar a la acción para activar. Solo use action_of_the_button->trigger();!

Cuestiones relacionadas