Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] problema al grabar archivo de texto en qt creator

Estas en el tema de problema al grabar archivo de texto en qt creator en el foro de C/C++ en Foros del Web. hola a todos, tengo el siguiente codigo en QTCREATOR y lo que pasa es que me esta escribiendo 2 veces los datos en el archivo ...
  #1 (permalink)  
Antiguo 07/07/2014, 14:38
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 2 meses
Puntos: 0
problema al grabar archivo de texto en qt creator

hola a todos, tengo el siguiente codigo en QTCREATOR y lo que pasa es que me esta escribiendo 2 veces los datos en el archivo de texto cada vez que hago un click en el push button, como si le hiciera dos clicks al push buton. Me estaria quedando el archivo del doble de tamaño cada vez que escribe en el archivo. La idea seria usar el manejo de archivos de “C” y “C++” pero no se porque sucede esto. Le puse un contador y efectivamente en cada click repite dos veces el "SLOT"

Código C++:
Ver original
  1. //pruebin.cpp
  2.     #include "pruebin.h"
  3.     #include "ui_pruebin.h"
  4.     #include <string>
  5.     using namespace std;
  6.      
  7.     pruebin::pruebin(QWidget *parent) :
  8.         QWidget(parent),
  9.         ui(new Ui::pruebin)
  10.     {
  11.         ui->setupUi(this);
  12.         connect(ui->pushButton,SIGNAL(clicked()),SLOT(on_pushButton_clicked()));
  13.     }
  14.      
  15.     pruebin::~pruebin()
  16.     {
  17.         delete ui;
  18.     }
  19.     FILE *arc;
  20.      
  21.     struct datos{
  22.         char name[30];
  23.         char edad[2];
  24.         char peso[2];
  25.     };
  26.     datos dat;
  27.      
  28.     void pruebin::on_pushButton_clicked() //SLOT de la señal clicked
  29.     {
  30.         arc=fopen("prueba.txt","a+");
  31.         QString nam=ui->lineEdit->text();
  32.         QString edd=ui->lineEdit_2->text();
  33.         QString pes=ui->lineEdit_3->text();
  34.      
  35.         string nnn=nam.toStdString();
  36.         string eee=edd.toStdString();
  37.         string ppp=pes.toStdString();
  38.      
  39.         strncpy(dat.name,nnn.c_str(),sizeof(dat.name));
  40.         strncpy(dat.edad,eee.c_str(),sizeof(dat.edad));
  41.         strncpy(dat.peso,ppp.c_str(),sizeof(dat.peso));
  42.      
  43.         fwrite(&dat,sizeof(dat),1,arc);
  44.         fclose(arc);
  45.     }
  #2 (permalink)  
Antiguo 08/07/2014, 02:47
Avatar de jc_moj  
Fecha de Ingreso: septiembre-2009
Ubicación: Andalucía
Mensajes: 137
Antigüedad: 14 años, 7 meses
Puntos: 12
Respuesta: problema al grabar archivo de texto en qt creator

Hola

Estás creando dos veces la conexión y por tanto se dispara dos veces el SLOT.

Desde QtDesigner has creado una conexión, dándole al botón derecho sobre el botón, eso te ha creado el método on_pushButton_clicked() que ya es una conexión "automática", cuando Qt encuentra un método con ese nombre: on_NobreDelWidget_Señal, crea una conexión.

Y luego estás usando connect en el constructor, por lo que ya tienes dos conexiones.

Borra la línea connect(...) del constructor.

Saludos
  #3 (permalink)  
Antiguo 08/07/2014, 21:43
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: problema al grabar archivo de texto en qt creator

Graicas man, tienes razon, ya lo solucione!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:52.