2008-10-03 6 views

Respuesta

4

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 una cierta discusión de este tema en el QtForum

+0

El diseñador Qt4 soporta la lectura de ranuras personalizados creados en formas portados desde qt3. Me dio la impresión de que también era posible crear uno. – user24560

+0

Ver el comentario de raigon a continuación, esto es posible actualmente. – OliJG

3

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 crear un complemento para el diseñador como es described here 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

2

No es posible hacerlo, porque significa que agregará una ranura a una clase de Qt existente como QPushButton que no es realmente 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.

2

No se olvide 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.

2

puede utilizar el formato de ranura magia 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 con este método se establece por el método connectSlotsByName y cada vez que se emite la señal, se invoca esta ranura.

28

Esto parece posible en la versión de Qt Designer 4.5.2, pero no se puede se puede hacer desde el dock-widget Signal/Slot Editor en la ventana principal.

Esto es lo que funcionó para mí

  1. Cambiar a modo de Edit Signals/Slots (F4)
  2. arrastrar y soltar desde el widget que es para emitir la señal, al widget que ha de recibir la señal.
  3. A Aparece el 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 ranuras a la derecha.
  4. A Signals/Slots of ReceivingWidget aparece el cuadro de diálogo. Aquí es posible hacer clic en el icono más debajo de las ranuras para agregar una nueva ranura de cualquier nombre.
  5. Luego puede volver atrás y conectarse a su nueva ranura en el cuadro de diálogo Configurar conexión, o bien en el dockwidget Signal/Slot Editor en la ventana principal.

Advertencia: estoy usando PyQt, y sólo he tratado de usar ranuras añadidas de esta manera desde Python, no desde C++, por lo que su experiencia puede variar ...

+3

Los dos botones "Editar ..." en el cuadro de diálogo Configurar conexión siempre están deshabilitados para mí. – James

+0

El botón Editar en Configurar conexión está deshabilitado. ¿Cómo hizo clic en él? –

+0

También tenía los botones grises, pero finalmente noté que si conecto la Señal a la ventana principal, puedo agregar ranuras usando el método que se da aquí. Parece que funciona como se esperaba pero significa que obtienes muchos métodos en la ventana principal en lugar de widgets individuales. –

1

Tal vez voy ayuda.

Por defecto, tiene que 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.

0

haga clic en el widget con el botón derecho

promover el widget en una clase que ha definido

haga clic en el widget con el botón derecho de nuevo

verá que la señal y la ranura es editable

26

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

+0

Esta es de lejos la mejor respuesta. –

+0

Esta debería ser la respuesta aceptada. – arainone

4

soy capaz de hacerlo por:

En MainWindow.h, añada la línea:

public slots: 
    void example(); 

en la clase MainWindow.

En mainwindow.cpp

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