Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2014, 14:38
shikamarucb
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 6 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.     }