Cómo utilizar QT para implementar múltiples señales de botones en respuesta a diferentes funciones de ranura
Esto es simple:
1) Agregue una señal en la ventana secundaria y una ranura de respuesta en la ventana principal para recibir la señal.
2) Envía esta señal en la función de ranura de botón de la ventana secundaria.
3) Conecte la señal de la ventana secundaria a su propia ranura de respuesta en la ventana principal.
// ChildWindow
clase ChildWindow: QWidget público
{
Q_OBJECT
público:
ChildWindow(QWidget* p = 0)
: QWidget(p)
{
QVBoxLayout* l = nuevo QVBoxLayout(este);
QPushButton* btn = nuevo QPushButton("btn", esto
l-gt; addWidget(btn); , SIGNAL(clicked()), SLOT(ClickedBtn( ));
}
señales:
// Esta señal se enviará a la ventana principal . /p>
void ChildWindowEvent();
ranuras protegidas:
// La ranura del botón en el que se hizo clic en la ventana secundaria
void ClickedBtn. ( )
{
// La señal que activa la ventana secundaria será recibida por la ventana principal
emit ChildWindowEvent(); p> }
}
// Ventana principal
clase ParentWindow: QWidget público
{
Q_OBJECT
público:
ParentWindow(QWidget* p = 0)
: QWidget(p)
{
QVBoxLayout* l = nuevo QVBoxLayout(este);
w = nuevo ChildWindow (este);
l-gt; addWidget(w);
/ / Agregar la ventana secundaria La señal de la ventana está conectada a la ventana principal
connect(w, SIGNAL(ChildWindowEvent()), SLOT(ChildWindowEventSlot());
}
protected:
ChildWindow* w;
ranuras protegidas:
// La ranura utilizada por la ventana principal para recibir señales de la ventana secundaria. .
void ChildWindowEventSlot()
{
// Se hace clic en el botón de la ventana secundaria.
}
}