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?¿Cómo creo una ranura personalizada en el diseñador qt4?
Respuesta
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
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
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.
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.
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.
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í
- Cambiar a modo de Edit Signals/Slots (F4)
- arrastrar y soltar desde el widget que es para emitir la señal, al widget que ha de recibir la señal.
- 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.
- 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.
- 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 ...
Los dos botones "Editar ..." en el cuadro de diálogo Configurar conexión siempre están deshabilitados para mí. – James
El botón Editar en Configurar conexión está deshabilitado. ¿Cómo hizo clic en él? –
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. –
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.
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
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.
Esta es de lejos la mejor respuesta. –
Esta debería ser la respuesta aceptada. – arainone
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>
}
- 1. ¿Cómo quitar la ranura, creada en modo Diseñador?
- 2. ¿Cómo creo una NSWindow modal personalizada?
- 3. ¿Cómo creo una UITableViewCell personalizada con plumín en Xcode 4?
- 4. ¿Cómo creo una clase de evento personalizada en Javascript?
- 5. ¿Cómo creo una animación de núcleo de página personalizada?
- 6. ¿Cómo creo y cancelo UILocalNotification único de una clase personalizada?
- 7. destructores en Qt4
- 8. Scala: ¿cómo heredar una "ranura estática"?
- 9. QT4 QstringListModel en QListView
- 10. BitBlt en Qt4?
- 11. Codificación URL en Qt4
- 12. QT4 Memory Management
- 13. Cómo implementar una señal/ranura definida en Qt Designer
- 14. usando Poppler Qt4 C++
- 15. Al pasar un argumento a una ranura
- 16. ¿Cómo establecer el valor predeterminado de una ranura como NULL en R?
- 17. ¿Hay QPath :: Combine en QT4?
- 18. Widget Latitud/Longitud Qt4?
- 19. Elemento Qt4 QMenu ordenando
- 20. cmake no encuentra Qt4
- 21. ¿Cómo creo una ruta aleatoria?
- 22. ¿Cómo creo una matriz JSON?
- 23. ¿Cómo creo una lista en Oz?
- 24. ¿Cómo creo una matriz heterogénea en Scala?
- 25. ¿Cómo creo una matriz 2D en Perl?
- 26. ¿Cómo creo una clase Perl?
- 27. ¿Cómo creo una tabla hash en Java?
- 28. ¿Cómo creo una clase en Javascript?
- 29. ¿Cómo creo una página 404?
- 30. Obteniendo el valor de una ranura de objetos S4?
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
Ver el comentario de raigon a continuación, esto es posible actualmente. – OliJG