QT - Problemas con las signals y slot

 
Vista:
sin imagen de perfil

Problemas con las signals y slot

Publicado por maximiliano (2 intervenciones) el 09/01/2014 04:09:25
Buenas noches, tengo un problema con el tema de las SIGNALS y los SLOT en el Qt creator. Estoy desarrollando el juego Block'D, donde cada ficha es un boton. Mi problema surge de este renglon:

connect(e.boton,SIGNAL(clicked()),this,SLOT(BorrarFichas()));

Yo lo que necesito es meter dos parametros dentro del BorrarFichas(), que serian dos numeros enteros correspondientes a la posicion i,j de mi matriz, para encontrar el boton y realizar las eliminaciones.

Ese connect esta dentro de mi clase Tablero, la cual se define de la siguiente manera en su .h:

#include "ficha.h"
#include<QPushButton>
#include <QtGlobal>
#include <QLabel>
#ifndef TABLERO_H
#define TABLERO_H

class Tablero:public QWidget
{
Q_OBJECT

private:
static const int Filas=10;
static const int Columnas=15;
static const int xFin=1000;
static const int yFin=620;
int Puntaje;
int Nivel;
Ficha matriz[Filas][Columnas];
QLabel*tab;
QLabel*Puntos;

public:
QWidget*principal;///PUBLICO PARA PODER BORRAR UNA FICHA DEL TABLERO
Tablero();
void Inicializar();
void Inicializar_Grafico_Tablero();
void Cerrar();
void Mostrar();
void Set_Puntaje(int puntos);
int Get_Nivel();
int Get_Puntaje();
bool Hay_Movimientos();
Ficha Get_Ficha(int i,int j);

private slots:
void BorrarFichas();

};


#endif // TABLERO_H

Si yo agrego los dos parametros enteros en mi BorrarFicha(), tanto en mi .h como en mi .cpp me tira el siguiente error:

QObject::connect: No such slot Tablero::BorrarFichas(i,j) in ..\Proyecto\tablero.cpp:123

Vi algunos ejemplos, y trate de redefinir el clicked() de la siguiente manera:
Agregue un signal en mi .h:
signal:
void clicked(int, int);
Luego en el cpp de mi tablero, agregue a mi comando clicked los parametros.

connect(e.boton,SIGNAL(clicked(int,int)),this,SLOT(BorrarFichas(I,J)));
emit clicked(I,J);

y el error que me tira es el siguiente:

QObject::connect: No such signal QPushButton::clicked(int,int) in ..\Proyecto\tablero.cpp:123


ESTOY PERDIDO, NECESITO AYUDA, estoy perdiendo tiempo indispensable en este proyecto. Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 96
Oro
Ha mantenido su posición en QT (en relación al último mes)
Gráfica de QT

Problemas con las signals y slot

Publicado por Juanki (102 intervenciones) el 13/01/2014 00:20:34
Hola

Los SLOT tienen que tener los mismos parámetros que las señales, si no, te darán error.

El SLOT borrarFicha() dices que tiene que recibir dos enteros. ¿Esos enteros dónde los tienes almacenados? ¿No puedes acceder a ellos desde dentro del propio método borrarFicha?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con las signals y slot

Publicado por Maxi Roselli (2 intervenciones) el 15/01/2014 06:46:02
No, porque cada lugar de mi matriz es un boton, y para identificar la posicion de dicho boton puse dos variables enteras dentro de mi clase ficha. Igual lo solucione haciendo un void de cada boton, osea, un borrar ficha para cada posicion, por ejemplo: BorrarFicha1_1(). Tengo 150 borrar xD. Desde el borrar 0_0 hasta el borrar 9_14
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 96
Oro
Ha mantenido su posición en QT (en relación al último mes)
Gráfica de QT

Problemas con las signals y slot

Publicado por Juanki (102 intervenciones) el 15/01/2014 13:20:28
¡¡¡ Eso son muchos "borrarFicha" !!!

¿Y no puedes acceder a las variables enteras que pusiste dentro de la clase ficha?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con las signals y slot

Publicado por Ana (10 intervenciones) el 06/05/2014 11:58:48
¿como lo solucionaste?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar