martes, 8 de abril de 2025

Iconos gratis

 Aquí dejo una colección de links a sitios de iconos gratis

Imágenes de stock

Parece que todas las imágenes ya las puede generar la IA, pero seamos honestos: la mayoría de sus intentos de foto-realismo se ven horribles.  Aquí dejo una pequeña colección de links a imágenes de stock

martes, 1 de abril de 2025

no matching function for call to connect

Conectar un signal a un slot en Qt es tan simple como

connect(source,  &Source::Mysignal, destination, &Destination::slot);

Pero hoy recibi este error: No matching function for call to ‘MyClass::connect(QBluetoothDeviceDiscoveryAgent*&, , MyClass*, void (MyClass::*)(QBluetoothDeviceDiscoveryAgent::Error))’ 

En este caso el error es porque QBluetoothDeviceDiscoveryAgent tiene 2 miembros con el nombre "error", 

  • void QBluetoothDeviceDiscoveryAgent::error(QBluetoothDeviceDiscoveryAgent::Error error);
  • Error QBluetoothDeviceDiscoveryAgent::error() const;
Para desambiguar la llamada hay que usar un cast especificando la firma de tipado de la función

undefined reference to vtable for MyClass

 Normalmente cuando el compilador reporta el error "undefined reference to vtable for MyClass" es porque

  • Una funcion miembro sobrecargada no se marco como "virtual"
  • La funcion miembro sobrecargada no esta definida( no se ha implementado el cuerpo de la funcion)
Pero hoy encontre un caso diferente, mientras creaba una clase derivada de QObject para un servicio que usa QtBluetooth, ambos casos estaban cubiertos. El problema resulto ser que no estaba activo el MOC (Meta Object Compiler).
Para Arreglarlo solo hay que activarlo con una variable en el archivo 
CMakelists.txt



Debe ir antes del comando "add_executable"