Etiquetas

555 74HC04 74HC14 74HC165 74LS04 acentos ADC10 Amstrad archivo arduino aristóteles armbian array ass at backup base64 bash Basho bc beethoven Biblia blog bucle c c++ c++11 c++17 C005 cadena Carmina Burana casting CD4017 CD4040 Cine clases Colores connect Consolación a Helvia Consolación a Marcia Consolación a Polibio constante corsair CPC Cristal 32Khz css cursor mouse cut daemon date dead keys Debian directorio disco duro DS32kHz electricidad Electrónica ensamblador entryList epicureismo Estadística estoicismo felicidad ffmpeg filePath filosofia Filosofía firefox flac for fstab funcion Gargantúa gastronomía gilgamesh Ginott gmp gpt grep gtts Hobbes hotkeys html imagemagick inline Javascript kde kernel modulos latex ldr lib-notify Linux Literatura ludoteca macro mapa de bits Matroska mega Microsoft Word Milan Kundera mkvextract mkvinfo mount mp3 mplayer MSP430 msp430F5529 MSP432 Multimedia Musica oop orange_pi pato PIR PL9823 Platón poesía POO en C++ pulseaudio puntero PWM pygame pyqt python QAction qApp QApplication QByteArray QDialog Qdir QFile QFileDialog QImage qlabel QList QListWidget QMessagebox QMouseEvent qpainter QPalette QPixmap QProcess QRegularExpression QRegularExpressionMatchIterator QString QStringList Qt qt5 QToolbar quijote QVector qwidget R Rabelais ratón relé Resonador cerámico samba San Agustín screen Séneca signal slot smart smartctl sox srt static const stdarg.h subtítulos Symbian tar teléfonos móviles temperatura temperatura cpu Temporizador tesseract Timer timestamp Trigonometría tts tutorial uid unicode user USI va_arg va_end va_list va_start velocidad ventilador Voltaire wallpaper xboxdrv xinput xrandr Z80 zip

sábado, abril 22, 2023

Nueva sintasix para signals y slots en Qt5

Las dos maneras de conectar un QAction con un slot:

1. Moderna sintaxis de conexiones tipo-safe (seguras) introducida en Qt5, utilizando punteros a funciones miembro.


connect(_actionBorrar, &QAction::triggered, this, &MainWindow::borrarChapter);

&QAction::triggered: Es un puntero a la función miembro triggered de la clase QAction.

&MainWindow::borrarChapter: Es un puntero a la función miembro borrarChapter de la clase MainWindow. borrarChapter es un slot personalizado que contiene el código que se ejecutará cuando se conecte a una señal y esta se emita

Con la nueva sintataxis en la declaracion de la clase los bloques signals: y public slots: son opcionales. Las señales no tienen que estar bajo una etiqueta signals, pero deben ser declaradas como funciones miembro sin implementación.


Ventajas sobre la sintaxis antigua:

    Verificación en tiempo de compilación: Si la señal o el slot no existen o no coinciden en sus tipos de argumentos, el compilador generará un error. Esto ayuda a detectar errores antes de que se ejecute el programa.
    Mayor legibilidad: Al utilizar punteros a funciones miembro, queda más claro qué función de qué objeto se está conectando.
    Soporte para funciones lambda: Con esta sintaxis, puedes conectar una señal directamente a una función lambda en lugar de tener que definir un slot separado.


2. Tradicional sintaxis de conexiones basadas en macros:


connect(_actionBorrar, SIGNAL(triggered()), this, SLOT(borrarChapter()));

Desventajas en comparación con la sintaxis tipo-safe:

  •     Verificación en tiempo de ejecución: Si la señal o el slot no existen o no coinciden en sus tipos de argumentos, el error solo se detectará en tiempo de ejecución, lo que puede dificultar la depuración y aumentar la probabilidad de errores.
  •     Menos legibilidad: Las macros SIGNAL() y SLOT() hacen que el código sea menos claro y más difícil de entender en comparación con la sintaxis basada en punteros a funciones miembro.
  •     No hay soporte para funciones lambda: Esta sintaxis solo permite conectar señales a slots definidos previamente en una clase.


No hay comentarios: