Changeset fc268a0 in mmcs for mainwindow.C


Ignore:
Timestamp:
Sep 18, 2015, 3:35:09 PM (9 years ago)
Author:
rboet <rboet@…>
Branches:
master, matrices
Children:
814c04d
Parents:
96b0c4a
Message:

Incorporacion de opcion nuevo proyecto y modelo de precios homogeneos clasico

File:
1 edited

Legend:

Unmodified
Added
Removed
  • mainwindow.C

    r96b0c4a rfc268a0  
    1414    connect(formLoadMatrix, SIGNAL(formAccepted(QString,int,int)),
    1515            this, SLOT(slotFormLoadMatrixAccepted(QString,int,int)));
     16}
     17
     18/*      Funcion para crear un nuevo proyecto        */
     19void MainWindow::slotNuevoProyecto()
     20{
     21    MainWindow *mw = new MainWindow;
     22    mw->show();
    1623}
    1724
     
    163170    menuFile.setTitle("&Archivo");
    164171
     172    actionNewProject.setText("&Nuevo Proyecto");
     173    menuFile.addAction(&actionNewProject);
     174
    165175    actionLoadMatrix.setText("&Cargar Matriz");
    166176    menuFile.addAction(&actionLoadMatrix);
     
    214224    Modelos.setDisabled(true);
    215225
    216     actionModeloClasico.setText("Módelo &Clásico");
     226    actionModeloClasico.setText("Modelo &Clásico");
    217227    actionModeloClasico.setDisabled(true);
    218228    Modelos.addAction(&actionModeloClasico);
    219229
    220     actionCompararResultados.setText("(&1) Comparar Resultados(Módelo Clásico)");
     230    actionCompararResultados.setText("(&1) Comparar Resultados(Modelo Clásico)");
    221231    actionCompararResultados.setDisabled(true);
    222232    Modelos.addAction(&actionCompararResultados);
    223233
    224     actionModeloNoClasico.setText("Módelo &No Clásico");
     234    actionModeloNoClasico.setText("Modelo &No Clásico");
    225235    actionModeloNoClasico.setDisabled(true);
    226236    Modelos.addAction(&actionModeloNoClasico);
    227237
    228     actionCompararResultadosMNC.setText("(&2) Comparar Resultados(Módelo No Clásico)");
     238    actionCompararResultadosMNC.setText("(&2) Comparar Resultados(Modelo No Clásico)");
    229239    actionCompararResultadosMNC.setDisabled(true);
    230240    Modelos.addAction(&actionCompararResultadosMNC);
    231241
     242    PHClasico.setTitle("Precios Homogéneos Clásico");
     243    PHClasico.setDisabled(true);
     244
     245    actionPHClasicoIncidencia100.setText("(&1) Incidencia 100%");
     246    actionPHClasicoIncidencia100.setDisabled(true);
     247    PHClasico.addAction(&actionPHClasicoIncidencia100);
     248
     249    PHClasicoIncidencia.setTitle("(&2) Incidencia i%");
     250    PHClasicoIncidencia.setDisabled(true);
     251
     252    actionPHCIncidenciaCuenta.setText("Por cue&nta");
     253    actionPHCIncidenciaCuenta.setDisabled(true);
     254    PHClasicoIncidencia.addAction(&actionPHCIncidenciaCuenta);
     255
     256    actionPHCIncidenciaComponente.setText("Por co&mponente");
     257    actionPHCIncidenciaComponente.setDisabled(true);
     258    PHClasicoIncidencia.addAction(&actionPHCIncidenciaComponente);
     259
     260    PHClasico.addMenu(&PHClasicoIncidencia);
     261
     262    Modelos.addMenu(&PHClasico);
     263
    232264    OpMatrices.addMenu(&Modelos);
    233265
     
    236268
    237269MainWindow::MainWindow()
    238     : actionLoadMatrix(this), actionExportMatrix(this), actionQuit(this),actionCH(this), actionCV(this),
     270    : actionNewProject(this),actionLoadMatrix(this), actionExportMatrix(this), actionQuit(this),actionCH(this), actionCV(this),
    239271      actionVariableExogena(this),actionLa(this),actionCTVEndEx(this),actionEncadenamiento(this), actionModeloClasico(this),
    240       actionCompararResultados(this), actionModeloNoClasico(this),actionCompararResultadosMNC(this),formLoadMatrix(0)
     272      actionCompararResultados(this), actionModeloNoClasico(this),actionCompararResultadosMNC(this),actionPHClasicoIncidencia100(this),
     273      actionPHCIncidenciaCuenta(this),actionPHCIncidenciaComponente(this),formLoadMatrix(0)
    241274{
    242275    tabWidget = new QTabWidget;
     
    254287    opcionFormCompararResultados = 0;
    255288    opcionFormCompararResultadosMNC = 0;
    256     /*      Estas variables permiten terner el control de los procedimientos que se pueden generar multiples ventanas */
     289    opcionMAT = 0;
     290    /*      Estas variables permiten tener el control de los procedimientos que se pueden generar multiples ventanas */
    257291    cantidadEncadenamientos = 1;
    258292    cantidadEscenarios = 1;
     
    260294    cantidadMNC = 1;
    261295    cantidadResultadosMNC = 1;
     296    cantidadPHCindidenciaiCuenta = 1;
     297    cantidadPHCindidenciaiComponente = 1;
    262298
    263299    initGUI();
    264300
     301    connect(&actionNewProject,SIGNAL(triggered()),this,SLOT(slotNuevoProyecto()));
    265302    connect(&actionLoadMatrix, SIGNAL(triggered()), this,
    266303            SLOT(slotLoadMatrix()));
     
    295332    QVBoxLayout * layoutLateralWidget = new QVBoxLayout;
    296333
    297     QTableWidget * tableWidget = new QTableWidget(this);
     334    QTableWidget * tableWidget = new QTableWidget;
    298335    tableWidget->setObjectName("TablaPrincipal");//Se le asigna nombre al objeto
    299336    QGroupBox * groupBoxAccount = new QGroupBox;
     
    9871024            }
    9881025            lw->setDisabled(true);
    989             opcionCuentaExogena=1;//Se establece un valor para la variable de la opcion
    9901026            diccCuentasExogenas.insert(nombre_cuenta,componentes_cuenta);
    991         }
    992     }
    993     else
    994     {
    995         int cantidad=stackVE->comboAccount->count();
    996         for(int i=0;i<cantidad;i++)
    997         {
    998             QListWidget *lw=new QListWidget;
    999             lw=stackVE->veWidget->accounListWidget;
    1000             lw = findChild<QListWidget *>(QString("accountlist %1").arg(i + 1));//Se obtiene la lista seleccionada
    1001             lw->setDisabled(true);
    1002             opcionCuentaExogena=2;//Se establece un valor para la variable de la opcion
    1003         }
    1004 
    1005     }
    1006 
     1027            opcionCuentaExogena++;
     1028        }
     1029    }
    10071030}
    10081031
     
    10181041    if(opcionCuentaExogena==1)//Si seleccionaron componentes
    10191042    {
    1020 
    10211043        int elementos = contarElementosMap(diccCuentasExogenas);
    10221044
     
    11051127        clonarTabla(tablaEE,matrizEndogena,inicioExogena);
    11061128        CalcularTotales(matrizEndogena,2);
     1129        calcularTotalCuentas(matrizEndogena);
    11071130
    11081131        CalcularTotales(tablaEE,2);
     
    11411164        obtenerCuentaComponentes();//Se guardan las cuentas/componentes
    11421165
    1143         //Se activa la opción de módelo clásico y no clásico
     1166        //Se activa la opción de modelo clásico
    11441167        Modelos.setEnabled(true);
    11451168        actionModeloClasico.setEnabled(true);
    11461169        connect(&actionModeloClasico,SIGNAL(triggered()),this,SLOT(slotModeloClasico()));
    1147         //Se activa la opción para el módelo no clásico
     1170        //Se activa la opción para el modelo no clásico
    11481171        actionModeloNoClasico.setEnabled(true);
    11491172        connect(&actionModeloNoClasico,SIGNAL(triggered()),this,SLOT(slotModeloNoClasico()));
    1150 
    1151         tabWidget->setCurrentIndex(indice);
    1152 
    1153     }
    1154     else if(opcionCuentaExogena==2)//Si se seleccionaron todas las cuentas
    1155     {
    1156 
    1157         /*****      Se llena la tabla vacia con los valores de la tabla principal ****/
    1158         for(int i=0;i<count-1;i++)
    1159         {
    1160             for(int j=0;j<count-1;j++)
    1161             {
    1162                 if(i>=2 && j>=2)
    1163                 {
    1164                     QString value = Separador(tablaPPAL->item(i,j),true);
    1165                     double valor=value.toDouble();
    1166                     QTableWidgetItem *ValoraInsertar = new QTableWidgetItem(QString::number(valor,'f',precission));
    1167                     value = Separador(ValoraInsertar,false);
    1168                     ValoraInsertar->setText(value);
    1169                     ValoraInsertar->setFlags(ValoraInsertar->flags() ^ Qt::ItemIsEditable);
    1170                     ValoraInsertar->setTextAlignment(Qt::AlignCenter);
    1171                     tablaEE->setItem(i,j,ValoraInsertar);
    1172                 }
    1173                 /****           En este else se llenan las celdas con fila y columna 0, es decir las que tienen nombre *****/
    1174                 else if(((i==0 && j>1)||(j==0 && i>1))or((i==1 && j>1)||(j==1 && i>1)))
    1175                 {
    1176                     QString value=tablaPPAL->item(i,j)->text();
    1177                     QTableWidgetItem *ValoraInsertar = new QTableWidgetItem(value);
    1178                     ValoraInsertar->setFlags(ValoraInsertar->flags() ^ Qt::ItemIsEditable);
    1179                     if((i==0 && j>1)||(j==0 && i>1))
    1180                     {
    1181                         CellStyle(ValoraInsertar);
    1182                     }
    1183                     else if((i==1 && j>1)||(j==1 && i>1))
    1184                     {
    1185                         CellStyleComponente(ValoraInsertar);
    1186                     }
    1187                     tablaEE->setItem(i,j,ValoraInsertar);
    1188                 }
    1189                 else
    1190                 {
    1191                     QTableWidgetItem *ValoraInsertar = new QTableWidgetItem;
    1192                     ValoraInsertar->setFlags(ValoraInsertar->flags() ^ Qt::ItemIsEditable);
    1193                     tablaEE->setItem(i,j,ValoraInsertar);
    1194                 }
    1195 
    1196              }
    1197         }
    1198 
    1199         CalcularTotales(tablaEE,2);
    1200         setEndogenaExogenaCell(tablaEE,2,count-2,false);
    1201 
    1202         //Se agrega la nueva pestaña
    1203         tabWidget->addTab(new QWidget,"Tipo de Variable");
    1204         int indice=ObtenerIndice("Tipo de Variable");//Se obtiene el indice de la pestaña
    1205         QHBoxLayout * layoutCentralWidget = new QHBoxLayout;
    1206         layoutCentralWidget->addWidget(tablaEE);
    1207         QWidget *widget = tabWidget->widget(indice);
    1208         widget->setLayout(layoutCentralWidget);//Se añade el widget y layout a la pestaña creada
    1209         formVariablesExogenas->close();
    1210 
    1211         //Se juntan los espacios referentes a las cuentas
    1212         crearDiccionario(tablaEE);
    1213         spanEndogenaCell(tablaEE,3,1);
     1173        //Se activa la opcion para los modelos de precios homogeneos clásico
     1174        PHClasico.setEnabled(true);
     1175        actionPHClasicoIncidencia100.setEnabled(true);
     1176        connect(&actionPHClasicoIncidencia100,SIGNAL(triggered()),this,SLOT(slotPHCIncidencia100()));
     1177        PHClasicoIncidencia.setEnabled(true);
     1178        actionPHCIncidenciaCuenta.setEnabled(true);
     1179        connect(&actionPHCIncidenciaCuenta,SIGNAL(triggered()),this,SLOT(slotPHCIncidenciaiCuenta()));
     1180        actionPHCIncidenciaComponente.setEnabled(true);
     1181        connect(&actionPHCIncidenciaComponente,SIGNAL(triggered()),this,SLOT(slotPHCIncidenciaiComponente()));
    12141182
    12151183        tabWidget->setCurrentIndex(indice);
     
    22792247    int elementos = contarElementosMap(diccCuentasExogenas);
    22802248    int count=tw->rowCount()-2;
    2281     int inicioExogena;
    2282     if(opcionCuentaExogena==1)
    2283     {
    2284         inicioExogena=count-elementos;
    2285     }
    2286     else
    2287     {
    2288         inicioExogena=count;
    2289     }
     2249    int inicioExogena=count-elementos;
     2250
    22902251    for(int i=3;i<inicioExogena+1;i++)
    22912252    {
     
    23002261    int elementos = contarElementosMap(diccCuentasExogenas);
    23012262    int count=tw->rowCount()-2;
    2302     int inicioExogena;
    2303     if(opcionCuentaExogena==1)
    2304     {
    2305         inicioExogena=count-elementos;
    2306     }
    2307     else
    2308     {
    2309         inicioExogena=3;
    2310     }
     2263    int inicioExogena=count-elementos;
     2264
    23112265    int cantidad = tw->rowCount();
    23122266    for(int i=inicioExogena+1;i<cantidad-1;i++)
     
    23302284    {
    23312285        inicioExogena = tw->rowCount();
    2332     }
    2333     else
    2334     {
    2335         inicioExogena=count;
    23362286    }
    23372287    foreach(int key,diccCuentasEndogenas.keys())
     
    23652315    int elementos = contarElementosMap(diccCuentasExogenas);
    23662316    int count=tw->rowCount()-1;
    2367     int inicioExogena;
    2368     if(opcionCuentaExogena==1)
    2369     {
    2370         inicioExogena=count-elementos;
    2371     }
    2372     else
    2373     {
    2374         inicioExogena=count;
    2375     }
     2317    int inicioExogena=count-elementos;
     2318
    23762319    foreach(int key,espacioCuentasExogenas.keys())
    23772320    {
     
    24242367        lista.clear();
    24252368    }
     2369    foreach (QString key, diccCuentasComponentes.keys())
     2370    {
     2371        ComponentesEndogenos.append(diccCuentasComponentes[key]);
     2372    }
    24262373}
    24272374
     
    25462493
    25472494/*          Funcion para crear una tabla vacia, específicamente para los encadenamientos        */
    2548 void MainWindow::crearTablaVaciaEncadenamiento(int columnas, QTableWidget *tw,int filas)
    2549 {
    2550     for(int j=0;j<filas;j++)
     2495void MainWindow::crearTablaVaciaEncadenamiento(int filas, QTableWidget *tw,int columnas)
     2496{
     2497    for(int j=0;j<columnas;j++)
    25512498    {
    25522499        tw->insertColumn(0);
    25532500    }
    2554     for(int k=0;k<columnas;k++)
     2501    for(int k=0;k<filas;k++)
    25552502    {
    25562503        tw->insertRow(k);
     
    32883235        titlespanMatrizExgEnd(Bn);
    32893236
    3290         tabWidget->addTab(new QWidget,"Ma^T");
    3291         int indice=ObtenerIndice("Ma^T");
     3237        tabWidget->addTab(new QWidget,"Bn");
     3238        int indice=ObtenerIndice("Bn");
    32923239        QHBoxLayout * layoutCentralWidget = new QHBoxLayout;
    32933240        layoutCentralWidget->addWidget(Bn);
     
    35833530    }
    35843531    titlespanMatrizExgEnd(Mb);
    3585     tabWidget->addTab(new QWidget,"Modelo No Clásico");
    3586     int indice=ObtenerIndice("Modelo No Clásico");
     3532    tabWidget->addTab(new QWidget,"Mb");
     3533    int indice=ObtenerIndice("Mb");
    35873534    QHBoxLayout * layoutCentralWidget = new QHBoxLayout;
    35883535    layoutCentralWidget->addWidget(Mb);
     
    38073754}
    38083755
     3756/*      Funcion que crea un vector con el total de las cuentas      */
     3757void MainWindow::calcularTotalCuentas(QTableWidget *tw)
     3758{
     3759    int cantidad = tw->rowCount();
     3760    for(int i = 2;i<cantidad-1;i++)
     3761    {
     3762        QString cuenta = tw->item(i,0)->text();
     3763        QString value = Separador(tw->item(i,cantidad-1),true);
     3764        double total = value.toDouble();
     3765        if(totalCuentas.contains(cuenta))
     3766        {
     3767            totalCuentas[cuenta] += total;
     3768        }
     3769        else
     3770        {
     3771            totalCuentas.insert(cuenta,total);
     3772        }
     3773    }
     3774    qDebug()<<"total de las cuentas"<<totalCuentas;
     3775    estimarVectorPonderacion(tw);
     3776}
     3777
     3778/*      Funcion que calcula el vector ponderacion       */
     3779void MainWindow::estimarVectorPonderacion(QTableWidget *tw)
     3780{
     3781    int cantidad = tw->rowCount();
     3782    for(int i = 2;i<cantidad-1;i++)
     3783    {
     3784        QString cuenta = tw->item(i,0)->text();
     3785        QString value = Separador(tw->item(i,cantidad-1),true);
     3786        double total = value.toDouble();
     3787        if(totalCuentas.contains(cuenta))
     3788        {
     3789            Vpond.append(total/totalCuentas[cuenta]);
     3790        }
     3791    }
     3792    qDebug()<<"Vector Ponderacion"<<Vpond;
     3793}
     3794
     3795void MainWindow::slotPHCIncidencia100()
     3796{
     3797    if(opcionMAT == 0)
     3798    {
     3799        calcularMaT();
     3800    }
     3801    QTableWidget *MatrizMi = new QTableWidget;
     3802    MatrizMi->setObjectName("PHC100");
     3803    calcularPHCIncidencia100(MatrizMi);
     3804
     3805    tabWidget->addTab(new QWidget,"PHC100");
     3806    int indice=ObtenerIndice("PHC100");
     3807
     3808    QHBoxLayout * layoutCentralWidget = new QHBoxLayout;
     3809    layoutCentralWidget->addWidget(MatrizMi);
     3810    QWidget *widget = tabWidget->widget(indice);
     3811    widget->setLayout(layoutCentralWidget);
     3812    tabWidget->setCurrentIndex(indice);
     3813    actionPHClasicoIncidencia100.setDisabled(true);
     3814}
     3815
     3816/*          Funcion que determina Ma Transpuesta o Ma^T        */
     3817void MainWindow::calcularMaT()
     3818{
     3819    if(opcionMa == 0)
     3820    {
     3821        slotMa();
     3822    }
     3823    QTableWidget *MaT = new QTableWidget;
     3824    MaT->setObjectName("MatrizMaT");
     3825    QTableWidget *Ma = findChild<QTableWidget *>("MatrizMa");
     3826    int cantidad = Ma->rowCount()-2;
     3827    CrearTablaVacia(cantidad+1,MaT);
     3828    MatrizMat = MatrixMa.transpose();
     3829    for(int i=0;i<cantidad;i++)
     3830    {
     3831        for(int j=0;j<cantidad;j++)
     3832        {
     3833            double value = MatrizMat(i,j);
     3834            QString valor = QString::number(value,'f',precission);
     3835            QTableWidgetItem *item = new QTableWidgetItem(valor);
     3836            valor = Separador(item,false);
     3837            item->setText(valor);
     3838            item->setFlags(item->flags() ^ Qt::ItemIsEditable);
     3839            item->setTextAlignment(Qt::AlignCenter);
     3840            MaT->setItem(i,j,item);
     3841        }
     3842    }
     3843    titleEndogena(MaT);
     3844    spanEndogenaCell(MaT,2,0,false);
     3845    tabWidget->addTab(new QWidget,"Ma^T");
     3846    int indice=ObtenerIndice("Ma^T");
     3847
     3848    QHBoxLayout * layoutCentralWidget = new QHBoxLayout;
     3849    layoutCentralWidget->addWidget(MaT);
     3850    QWidget *widget = tabWidget->widget(indice);
     3851    widget->setLayout(layoutCentralWidget);
     3852    tabWidget->setCurrentIndex(indice);
     3853    opcionMAT++;
     3854}
     3855
     3856/*          Calcula la incidencia al 100%       */
     3857void MainWindow::calcularPHCIncidencia100(QTableWidget *tw)
     3858{
     3859    int count = Vpond.count();
     3860    MatrixXd Res(count,count);
     3861    for(int i=0;i<count;i++)
     3862    {
     3863        for(int j=0;j<count;j++)
     3864        {
     3865            Res(i,j)=MatrizMat(i,j) * Vpond.at(i);
     3866        }
     3867    }
     3868    CrearTablaVacia(count+1,tw);
     3869    for(int i=0;i<count;i++)
     3870    {
     3871        for(int j=0;j<count;j++)
     3872        {
     3873            double value = Res(i,j);
     3874            QString valor = QString::number(value,'f',precission);
     3875            QTableWidgetItem *item = new QTableWidgetItem(valor);
     3876            valor = Separador(item,false);
     3877            item->setText(valor);
     3878            item->setFlags(item->flags() ^ Qt::ItemIsEditable);
     3879            item->setTextAlignment(Qt::AlignCenter);
     3880            tw->setItem(i,j,item);
     3881        }
     3882    }
     3883    titleEndogena(tw);
     3884    spanEndogenaCell(tw,2,0,false);
     3885}
     3886
     3887void MainWindow::slotPHCIncidenciaiCuenta()
     3888{
     3889    if(opcionMAT == 0)
     3890    {
     3891        calcularMaT();
     3892    }
     3893    FI = new FormIncidenciaI(this);
     3894    QTableWidget *tw = FI->ui->TableIncidencia;
     3895    int cuentas = totalCuentas.count();
     3896    crearTablaVaciaEncadenamiento(2,tw,cuentas);
     3897    QStringList nombreCuenta = totalCuentas.keys();
     3898    for(int i=0;i<cuentas;i++)
     3899    {
     3900        QTableWidgetItem *titulo = new QTableWidgetItem(nombreCuenta.at(i));
     3901        titulo->setFlags(titulo->flags() ^ Qt::ItemIsEditable);
     3902        titulo->setTextAlignment(Qt::AlignCenter);
     3903        CellStyle(titulo);
     3904        tw->setItem(0,i,titulo);
     3905        QTableWidgetItem *number = new QTableWidgetItem(QString::number(0,'f',precission));
     3906        number->setTextAlignment(Qt::AlignCenter);
     3907        QString item = Separador(number,false);
     3908        number->setText(item);
     3909        tw->setItem(1,i,number);
     3910    }
     3911    connect(FI->ui->CalcularIncidencia,SIGNAL(clicked()),this,SLOT(slotCalcularPHCIncidenciaiCuenta()));
     3912    FI->show();
     3913}
     3914
     3915void MainWindow::slotCalcularPHCIncidenciaiCuenta()
     3916{
     3917    QTableWidget *tw = FI->ui->TableIncidencia;
     3918    int cuentas = totalCuentas.count();
     3919    QMap<QString,double> cantidades;
     3920    for(int i=0;i<cuentas;i++)
     3921    {
     3922        QString cuenta = tw->item(0,i)->text();
     3923        QString value = Separador(tw->item(1,i),true);
     3924        cantidades.insert(cuenta,value.toDouble());
     3925    }
     3926    qDebug()<<"cantidades"<<cantidades;
     3927
     3928    QTableWidget *MatrizIC = new QTableWidget;
     3929    MatrizIC->setObjectName(QString("PHCIcuenta %1").arg(cantidadPHCindidenciaiCuenta));
     3930    calcularPHCIncidencia100(MatrizIC);
     3931    calcularPHCIncidenciaI(MatrizIC,cantidades);
     3932
     3933    tabWidget->addTab(new QWidget,QString("PHCI %1").arg(cantidadPHCindidenciaiCuenta));
     3934    int indice=ObtenerIndice(QString("PHCI %1").arg(cantidadPHCindidenciaiCuenta));
     3935
     3936    QHBoxLayout * layoutCentralWidget = new QHBoxLayout;
     3937    layoutCentralWidget->addWidget(MatrizIC);
     3938    QWidget *widget = tabWidget->widget(indice);
     3939    widget->setLayout(layoutCentralWidget);
     3940    tabWidget->setCurrentIndex(indice);
     3941    cantidadPHCindidenciaiCuenta++;
     3942}
     3943
     3944void MainWindow::calcularPHCIncidenciaI(QTableWidget *tw,QMap<QString,double> inci)
     3945{
     3946    int count = tw->rowCount();
     3947    for(int i=2;i<count;i++)
     3948    {
     3949        for(int j=2;j<count;j++)
     3950        {
     3951
     3952            QString cuenta= tw->item(i,0)->text();
     3953            QString number = Separador(tw->item(i,j),true);
     3954            double valor = number.toDouble();
     3955            if(inci.contains(cuenta) and inci[cuenta]!=0)
     3956            {
     3957                valor = valor*(inci[cuenta]/100);
     3958            }
     3959            QTableWidgetItem *ValoraInsertar = new QTableWidgetItem(QString::number(valor,'f',precission));
     3960            ValoraInsertar->setFlags(ValoraInsertar->flags() ^ Qt::ItemIsEditable);
     3961            ValoraInsertar->setTextAlignment(Qt::AlignCenter);
     3962            QString value = Separador(ValoraInsertar,false);
     3963            tw->item(i,j)->setText(value);
     3964        }
     3965    }
     3966    FI->close();
     3967}
     3968
     3969void MainWindow::slotPHCIncidenciaiComponente()
     3970{
     3971    if(opcionMAT == 0)
     3972    {
     3973        calcularMaT();
     3974    }
     3975    FI = new FormIncidenciaI(this);
     3976    int contador = ComponentesEndogenos.count();
     3977
     3978    QTableWidget *tw = FI->ui->TableIncidencia;
     3979    crearTablaVaciaEncadenamiento(2,tw,contador);
     3980
     3981    for(int i=0;i<contador;i++)
     3982    {
     3983        QTableWidgetItem *titulo = new QTableWidgetItem(ComponentesEndogenos.at(i));
     3984        titulo->setFlags(titulo->flags() ^ Qt::ItemIsEditable);
     3985        titulo->setTextAlignment(Qt::AlignCenter);
     3986        CellStyleComponente(titulo);
     3987        tw->setItem(0,i,titulo);
     3988        QTableWidgetItem *number = new QTableWidgetItem(QString::number(0,'f',precission));
     3989        number->setTextAlignment(Qt::AlignCenter);
     3990        QString item = Separador(number,false);
     3991        number->setText(item);
     3992        tw->setItem(1,i,number);
     3993    }
     3994    connect(FI->ui->CalcularIncidencia,SIGNAL(clicked()),this,SLOT(slotCalcularPHCIncidenciaiComponente()));
     3995    FI->show();
     3996}
     3997
     3998void MainWindow::slotCalcularPHCIncidenciaiComponente()
     3999{
     4000    QTableWidget *tw = FI->ui->TableIncidencia;
     4001
     4002    QTableWidget *MatrizIComp = new QTableWidget;
     4003    MatrizIComp->setObjectName(QString("PHCIcomponente %1").arg(cantidadPHCindidenciaiComponente));
     4004    calcularPHCIncidencia100(MatrizIComp);
     4005    calcularPHCIncidenciaIComponente(MatrizIComp,tw);
     4006
     4007    tabWidget->addTab(new QWidget,QString("PHCIc %1").arg(cantidadPHCindidenciaiComponente));
     4008    int indice=ObtenerIndice(QString("PHCIc %1").arg(cantidadPHCindidenciaiComponente));
     4009
     4010    QHBoxLayout * layoutCentralWidget = new QHBoxLayout;
     4011    layoutCentralWidget->addWidget(MatrizIComp);
     4012    QWidget *widget = tabWidget->widget(indice);
     4013    widget->setLayout(layoutCentralWidget);
     4014    tabWidget->setCurrentIndex(indice);
     4015    cantidadPHCindidenciaiComponente++;
     4016}
     4017
     4018void MainWindow::calcularPHCIncidenciaIComponente(QTableWidget *tw,QTableWidget *ot)
     4019{
     4020    int count = tw->rowCount();
     4021    for(int i=2;i<count;i++)
     4022    {
     4023        QString incidencia = ot->item(1,i-2)->text();
     4024        double inci = incidencia.toDouble();
     4025        for(int j=2;j<count;j++)
     4026        {
     4027            QString number = Separador(tw->item(i,j),true);
     4028            double valor = number.toDouble();
     4029            if(inci!=0)
     4030            {
     4031                valor = valor*(inci/100);
     4032                QTableWidgetItem *ValoraInsertar = new QTableWidgetItem(QString::number(valor,'f',precission));
     4033                ValoraInsertar->setFlags(ValoraInsertar->flags() ^ Qt::ItemIsEditable);
     4034                ValoraInsertar->setTextAlignment(Qt::AlignCenter);
     4035                QString value = Separador(ValoraInsertar,false);
     4036                tw->item(i,j)->setText(value);
     4037            }
     4038        }
     4039    }
     4040    FI->close();
     4041}
Note: See TracChangeset for help on using the changeset viewer.