tutorial interfaz instalar grafica español descargar creator c++ qt qt4 qt-creator qt-designer

c++ - interfaz - ¿Cómo creo una ranura personalizada en qt4 designer?



qt designer tutorial español (10)

Cada vez que uso el cuadro de diálogo del editor de señales / ranuras, tengo que elegir de la lista existente de ranuras. Entonces, la pregunta es ¿cómo creo un tragamonedas con nombre personalizado?


Desafortunadamente 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 para que los slots personalizados no sean compatibles.

Hay algo de discusión sobre este tema en QtForum


Esto no parece posible de una manera simple.

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 crear un complemento para el diseñador como se describe aquí y en las páginas que lo siguen.

El curso de acción normal es promocionar un widget para su propia clase y luego conectarlo manualmente en su propio código. este proceso se describe here


Esto parece ser posible en la versión de Qt Designer 4.5.2, pero no se puede hacer desde el dock-widget 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 emitirá la señal hasta el widget que recibirá la señal.
  3. Aparece un cuadro de diálogo Configurar conexión , que muestra las señales para el widget emisor y las ranuras para el widget receptor. Haga clic en Editar ... debajo de la columna de espacios a la derecha.
  4. Aparece un cuadro de diálogo Signals / Slots of ReceivingWidget . Aquí es posible hacer clic en el icono más debajo de las ranuras para agregar una nueva ranura de cualquier nombre.
  5. A continuación, puede volver y conectarse a su nueva ranura en el cuadro de diálogo Configurar conexión o, de hecho, en el dockwidget Signal / Slot Editor en la ventana principal.

Advertencia: estoy usando PyQt, y solo he intentado usar slots añadidos de esta manera desde Python, no desde C ++, por lo que su kilometraje puede variar ...


Haga clic derecho en la ventana principal y seleccione "cambiar señales y ranuras" y agregue un nuevo espacio. Aparecerá en tu editor de ranura de señal.


No es posible hacerlo, porque significa que agregaría una ranura a una clase Qt existente, como QPushButton que realmente no es el camino a seguir.

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 funciones 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 empresa.


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> }


Quizás ayude.

Por defecto, debe elegir de la lista existente de ranuras. Pero puede agregar una ranura haciendo clic derecho en su objeto en la lista en el lado derecho del diseñador y elija "ranura / señales" y agregue su ranura / señal personalizada. Después de eso, puede elegirlo en el editor de señal / ranura.


haga clic en el widget con el botón derecho

promocione el widget en una clase que haya definido

haga clic en el widget con el botón derecho otra vez

verá que la señal y la ranura son editables


puede 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 cada vez que se emite la señal, se invoca este intervalo.