Red de conocimiento informático - Material del sitio web - Cómo utilizar QT para implementar múltiples señales de botones en respuesta a diferentes funciones de ranura

Cómo utilizar QT para implementar múltiples señales de botones en respuesta a diferentes funciones de ranura

Te refieres a hacer clic en el botón en la ventana secundaria y la función de ranura en la ventana principal responde al clic, ¿verdad?

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.

}

}