martes, 1 de septiembre de 2015

Simulacion de Recibo en C++ QT Creator & QTableWidget

QT Creator es uno de los mejores IDE para c++ en especial cuando se trata de crear formularios, maneja todos los controles como cuadro de texto, botones, Table, combos box, listas, conexion a base de datos, generacion de archivos pdf, archivos de texto, tiene otros temas como qt network, es excelente.
 

File mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <cmath>
#include <QDateTime>
#include <QTimer>
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

{
    ui->setupUi(this);
    setWindowTitle("Simulacion de Recibo");
    QStringList titu;
    ui->tblPro->setColumnCount(4);
    titu<<"Producto"<<"Precio_U"<<"Cantidad"<<"Importe";
    ui->tblPro->setHorizontalHeaderLabels(titu);
    ui->tblPro->setColumnWidth(0,150);
    cargar_combo();
    cargar_cli();
    setHora();
}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::setHora()
{
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(cargar_fecha()));
    timer->start(1000);
}

void MainWindow::on_btnAdd_clicked()
{
    //ui->txtPrecio->setText(ui->txtNombre->text());
    ui->tblPro->insertRow(ui->tblPro->rowCount());
    ui->tblPro->setItem(ui->tblPro->rowCount()-1,0,new QTableWidgetItem(ui->cmbPro->currentText()));
    ui->tblPro->setItem(ui->tblPro->rowCount()-1,1,new QTableWidgetItem(ui->txtPrecio->text()));
    ui->tblPro->setItem(ui->tblPro->rowCount()-1,2,new QTableWidgetItem(ui->txtCan->text()));
    calTot();
}
void MainWindow::cargar_combo()
{
    ui->cmbPro->addItem("PlayStation 4");
    ui->cmbPro->addItem("Laptop Dell i7");
    ui->cmbPro->addItem("Hard disk 1Tb");
    ui->cmbPro->addItem("TV 60 LED Sony");
    ui->cmbPro->addItem("Laptop Apple i7");
    ui->cmbPro->addItem("Samsung Galaxy S6");
}
void MainWindow::calTot()
{
    double imp;
    double precio;
    double can;
    double S=0;
    double tax=0;
    double total=0;
    int i;
    for(i=0;i<ui->tblPro->rowCount();i++){
        precio=ui->tblPro->item(i,1)->text().toDouble();
        //precio=ui->tblPro->takeItem(i,1)->text().toDouble();
        can=ui->tblPro->item(i,2)->text().toDouble();
        imp=precio*can;
        ui->tblPro->setItem(i,3,new QTableWidgetItem(QString::number(imp)));
        S=S+imp;
        S=redo(S);
        tax=0.09*S;
        tax=redo(tax);
        total=1.09*S;
        total=redo(total);
        ui->lblSub->setText(QString::number(S));
        ui->lblTax->setText(QString::number(tax));
        ui->lblTotal->setText(QString::number(total));
    }
}
double MainWindow::redo(double n)
{
    n=n*100;
    n=round(n);
    n=n/100;
    return n;
}
void MainWindow::cargar_cli()
{
    ui->cmbCli->addItem("Miguel Nunez Varillas");
    ui->cmbCli->addItem("Rosa Castro");
    ui->cmbCli->addItem("Soila Monge");
    ui->cmbCli->addItem("Luis Salvatierra");
    ui->cmbCli->addItem("Alberto Lozano");
    ui->cmbCli->addItem("Fernando Garcia");
    ui->cmbCli->addItem("Julio Ortiz Jason");
}
void MainWindow::cargar_fecha()
{
    QDateTime tiempo2=QDateTime();
    ui->lblFecha->setText(tiempo2.currentDateTime().toString());
    QString h=QString::number(tiempo2.currentDateTime().time().hour());
    QString m=QString::number(tiempo2.currentDateTime().time().minute());
    QString s=QString::number(tiempo2.currentDateTime().time().second());
    ui->lblRelog->setText(h+":"+m+":"+s);
}

void MainWindow::on_cmbPro_currentIndexChanged(const QString &arg1)
{   QString cad;
    switch (ui->cmbPro->currentIndex()) {
    case 1:cad="500";break;
    case 2:cad="89";break;
    case 3:cad="700";break;
    case 4:cad="800";break;
    case 5:cad="200";break;
    default:cad="220";
        break;
    }
    ui->txtPrecio->setText(cad);
    ui->txtCan->setText("1");
}

void MainWindow::on_btnDel_clicked()
{   QMessageBox mensa;
    if (ui->tblPro->currentRow()>-1){
        ui->tblPro->removeRow(ui->tblPro->currentRow());
    }else{
        mensa.setText("Seleccione una fila");
        mensa.exec();
    }
}

Hallar las raizes de Cualquier Ecuacion con Excel 365

  Se establece un intervalo de x de -20 a 20 para hallar los f(x) que cambian de signo, X aumenta en 1.   Se halla el cambio de signo de f(x...