Pregunta

Siempre que use el cuadro de diálogo del editor de señal / ranura, tengo que elegir de la lista existente de ranuras. Entonces, la pregunta es ¿cómo creo una ranura con nombre personalizada?

¿Fue útil?

Solución

Lamentablemente, esto no es posible en Qt4.

En Qt3 puede crear ranuras personalizadas que luego se implementan en el archivo ui.h. Sin embargo, Qt4 no usa este archivo, por lo que las ranuras personalizadas no son compatibles.

Hay una discusión sobre este tema en QtForum

Otros consejos

Esto parece ser posible en la versión de Qt Designer 4.5.2, pero no puede hacerse desde el widget de acoplamiento de Signal / Slot Editor en la ventana principal.

Esto es lo que funcionó para mí

  1. Cambia al modo Editar señales / ranuras (F4)
  2. Arrastre y suelte desde el widget que debe emitir la señal, al widget que debe recibir la señal.
  3. Aparece el cuadro de diálogo Configurar conexión , que muestra las señales del widget emisor y las ranuras del widget receptor. Haga clic en Editar ... debajo de la columna de ranuras a la derecha.
  4. Aparece el cuadro de diálogo Señales / Ranuras de ReceivingWidget . Aquí es posible hacer clic en el icono más debajo de las ranuras para agregar una nueva ranura con cualquier nombre.
  5. Luego puede regresar y conectarse a su nueva ranura en el cuadro de diálogo Configurar conexión , o incluso en el dockwidget Signal / Slot Editor de nuevo en la ventana principal.

Advertencia: estoy usando PyQt, y solo he intentado usar las ranuras agregadas de esta manera desde Python, no desde C ++, por lo que su kilometraje puede variar ...

haga clic con el botón derecho en la ventana principal y seleccione " cambiar señales y ranuras " y agregar una nueva ranura. Aparecerá en su editor de ranura de señal.

Puedo hacerlo por:

En MainWindow.h, agregue la línea:

public slots:
     void example();

en la clase MainWindow.

En MainWindow.cpp

void MainWindow::example() {
     <code>
}

Esto no parece ser posible de una manera sencilla.

El diseñador solo le permite promocionar widgets existentes a sus propios widgets personalizados. sin embargo, no le permite conectar las señales y las ranuras de la clase de widgets promocionados.

La forma en que esto es posible es creando un complemento para el diseñador como es se describe aquí y en las páginas que lo siguen.

El curso de acción normal es promover un widget a su propia clase y luego conectarlo manualmente en su propio código. este proceso se describe aquí

No es posible hacerlo, porque significa que agregarías una ranura a una clase Qt existente como QPushButton que no es realmente la forma de hacerlo.

Debería crear su propio QWidget eventualmente subclasificando uno existente. Luego, integrándolo en Qt Designer como un complemento como se sugiere. Tener su propia clase le permite agregar / modificar las señales / ranuras disponibles como desee.

No te olvides de las características de conexión automática de la ranura. Hay algunos inconvenientes, como tener que cambiar el nombre de su función si cambia el nombre de su widget, pero los usamos mucho en mi compañía.

Puedes usar el formato de ranura mágica de

void on_objectName_signal() {
// slot code here, where objectname is the Qt Designer object name
// and the signal is the emission
}

La conexión a este método se establece mediante el método connectSlotsByName y siempre que se emite la señal, se invoca esta ranura.

Tal vez ayude.

De forma predeterminada, tiene que elegir de la lista existente de ranuras. Pero puede agregar una ranura haciendo clic con el botón derecho en su objeto en la lista en el lado derecho del diseñador y elegir " ranura / señales " y añada su ranura / señal personalizada. Después de eso, puedes elegirlo en el editor de señal / ranura.

haz clic en el widget con el botón derecho

promociona el widget en una clase que hayas definido

vuelva a hacer clic en el widget con el botón derecho

verá que la señal y la ranura se pueden editar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top