Changeset aa628c3 in mmcs for mainwindow.C
- Timestamp:
- Aug 11, 2015, 5:05:40 PM (9 years ago)
- Branches:
- master, matrices
- Children:
- 8daa049, 04999c9
- Parents:
- 1523c34
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
mainwindow.C
rbd5e45b raa628c3 106 106 { 107 107 QMessageBox msBox(QMessageBox::Question,"Alerta","¿Desea Salir?", QMessageBox::Yes | QMessageBox::No,this); 108 msBox.setButtonText(QMessageBox::Yes," Si");108 msBox.setButtonText(QMessageBox::Yes,"&Si"); 109 109 if(msBox.exec()==QMessageBox::No) 110 110 { … … 196 196 EndoExo.addAction(&actionVariableExogena); 197 197 198 actionAn.setText("Coeficientes &Horizontales");199 actionAn.setDisabled(true);200 EndoExo.addAction(&actionAn);201 202 198 actionLa.setText("Multiplicadores de &Leontief"); 203 199 actionLa.setDisabled(true); … … 216 212 MainWindow::MainWindow() 217 213 : actionLoadMatrix(this), actionExportMatrix(this), actionQuit(this),actionCH(this), actionCV(this), 218 actionVariableExogena(this),action An(this),actionLa(this),actionEncadenamiento(this), formLoadMatrix(0)214 actionVariableExogena(this),actionLa(this),actionEncadenamiento(this), formLoadMatrix(0) 219 215 { 220 216 tabWidget = new QTabWidget; … … 360 356 361 357 358 void MainWindow::slotCoeficienteVertical() 359 { 360 actionCV.setDisabled(true); 361 tabWidget->addTab(new QWidget,"CT_Vertical"); 362 QTableWidget *tw = findChild<QTableWidget *>("TablaPrincipal"); 363 364 /* Se eliminan la fila y columna (0,0) para los calculos*/ 365 insertremoveRowCol(tw,0,false); 366 367 QTableWidget *CT_VerticalTW = new QTableWidget; 368 int count=tw->rowCount(); 369 CrearTablaVacia(count,CT_VerticalTW);//Se crea una tabla vacia 370 /* **** Se coloca como no editable la celda(0,0) ***** */ 371 noEditColZero(CT_VerticalTW); 372 /***** Se llena la tabla vacia con los valores de la tabla principal ****/ 373 374 CalcularAn(tw,CT_VerticalTW,new QTableWidget,count,false);//Funcion para calcular el Coeficiente Tecnico Horizontal (An) 375 376 /* Se agrega la columna y fila (0,0) y se insertan los titulos de las cuentas */ 377 insertremoveRowCol(tw,0,true); 378 insertremoveRowCol(CT_VerticalTW,0,true); 379 setAccountTitle(tw); 380 setAccountTitle(CT_VerticalTW); 381 382 int indice=ObtenerIndice("CT_Vertical");//Se obtiene el indice de la pestaña 383 QHBoxLayout * layoutCentralWidget = new QHBoxLayout; 384 layoutCentralWidget->addWidget(CT_VerticalTW); 385 QWidget *widget = tabWidget->widget(indice); 386 widget->setLayout(layoutCentralWidget);//Se añade el widget y layout a la pestaña creada 387 388 } 389 362 390 void MainWindow::slotCoeficienteHorizontal() 363 391 { … … 369 397 insertremoveRowCol(tw,0,false); 370 398 399 int count=tw->rowCount(); 371 400 QTableWidget *CT_HorizontalTW = new QTableWidget; 372 int count=tw->rowCount(); 373 CrearTablaVacia(count,CT_HorizontalTW);//Se crea una tabla vacia 401 CrearTablaVacia(count,CT_HorizontalTW); //Se Crea la tabla vacia 374 402 /* **** Se coloca como no editable la celda(0,0) ***** */ 375 403 noEditColZero(CT_HorizontalTW); 376 /***** Se llena la tabla vacia con los valores de la tabla principal ****/377 378 CalcularAn(tw,CT_HorizontalTW,new QTableWidget,count,false);//Funcion para calcular el Coeficiente Tecnico Horizontal (An)379 380 /* Se agrega la columna y fila (0,0) y se insertan los titulos de las cuentas */381 insertremoveRowCol(tw,0,true);382 insertremoveRowCol(CT_HorizontalTW,0,true);383 setAccountTitle(tw);384 setAccountTitle(CT_HorizontalTW);385 386 int indice=ObtenerIndice("CT_Horizontal");//Se obtiene el indice de la pestaña387 QHBoxLayout * layoutCentralWidget = new QHBoxLayout;388 layoutCentralWidget->addWidget(CT_HorizontalTW);389 QWidget *widget = tabWidget->widget(indice);390 widget->setLayout(layoutCentralWidget);//Se añade el widget y layout a la pestaña creada391 392 }393 394 void MainWindow::slotCoeficienteVertical()395 {396 actionCV.setDisabled(true);397 tabWidget->addTab(new QWidget,"CT_Vertical");398 QTableWidget *tw = findChild<QTableWidget *>("TablaPrincipal");399 400 /* Se eliminan la fila y columna (0,0) para los calculos*/401 insertremoveRowCol(tw,0,false);402 403 int count=tw->rowCount();404 QTableWidget *CT_VerticalTW = new QTableWidget;405 CrearTablaVacia(count,CT_VerticalTW); //Se Crea la tabla vacia406 /* **** Se coloca como no editable la celda(0,0) ***** */407 noEditColZero(CT_VerticalTW);408 404 /***** Se llena la tabla vacia con los valores de la tabla principal ****/ 409 405 for(int i=0;i<count-1;i++) … … 429 425 value = Separador(ValoraInsertar,false); 430 426 ValoraInsertar->setText(value); 431 CT_ VerticalTW->setItem(i,j,ValoraInsertar);427 CT_HorizontalTW->setItem(i,j,ValoraInsertar); 432 428 } 433 429 /**** En este else se llenan las celdas con fila y columna 0, es decir las que tienen nombre *****/ … … 437 433 QTableWidgetItem *ValoraInsertar = new QTableWidgetItem(value); 438 434 ValoraInsertar->setFlags(ValoraInsertar->flags() ^ Qt::ItemIsEditable); 439 CT_ VerticalTW->setItem(j,i,ValoraInsertar);435 CT_HorizontalTW->setItem(j,i,ValoraInsertar); 440 436 } 441 437 … … 444 440 /* Se agrega la columna y fila (0,0) y se insertan los titulos de las cuentas */ 445 441 insertremoveRowCol(tw,0,true); 446 insertremoveRowCol(CT_ VerticalTW,0,true);442 insertremoveRowCol(CT_HorizontalTW,0,true); 447 443 setAccountTitle(tw); 448 setAccountTitle(CT_ VerticalTW);449 450 int indice=ObtenerIndice("CT_ Vertical");//Se obtiene el indice de la pestaña444 setAccountTitle(CT_HorizontalTW); 445 446 int indice=ObtenerIndice("CT_Horizontal");//Se obtiene el indice de la pestaña 451 447 QHBoxLayout * layoutCentralWidget = new QHBoxLayout; 452 layoutCentralWidget->addWidget(CT_ VerticalTW);448 layoutCentralWidget->addWidget(CT_HorizontalTW); 453 449 QWidget *widget = tabWidget->widget(indice); 454 450 widget->setLayout(layoutCentralWidget);//Se añade el widget y layout a la pestaña creada … … 464 460 QMessageBox msBox(QMessageBox::Question,"Deshacer","¿Desea deshacer todos los cambios?", 465 461 QMessageBox::Yes | QMessageBox::No,this); 466 msBox.setButtonText(QMessageBox::Yes," Si");462 msBox.setButtonText(QMessageBox::Yes,"&Si"); 467 463 msBox.setDefaultButton(QMessageBox::Yes); 468 464 if(msBox.exec()==QMessageBox::Yes) … … 585 581 for(int i=inicio;i<fin+1;i++) 586 582 { 587 QString item=tablaEE->item(0,i )->text();583 QString item=tablaEE->item(0,i-2)->text(); 588 584 if(item==key2) 589 585 { 590 586 QList<QString> fila; 591 fila=llenarLista(fila,tablaEE,i ,1);592 tablaEE->removeRow(i );587 fila=llenarLista(fila,tablaEE,i-2,1); 588 tablaEE->removeRow(i-2); 593 589 tablaEE->insertRow(tablaEE->rowCount()); 594 590 insertRowExogena(fila,tablaEE,1); … … 596 592 597 593 QList<QString> columna; 598 columna=llenarLista(columna,tablaEE,i ,0);599 tablaEE->removeColumn(i );594 columna=llenarLista(columna,tablaEE,i-2,0); 595 tablaEE->removeColumn(i-2); 600 596 tablaEE->insertColumn(tablaEE->columnCount()); 601 597 insertRowExogena(columna,tablaEE,0); … … 624 620 625 621 //Se crea la nueva pestaña 626 tabWidget->addTab(new QWidget," Endogena-Exogena");627 int indice=ObtenerIndice(" Endogena-Exogena");//Se obtiene el indice de la pestaña622 tabWidget->addTab(new QWidget,"Tipo de Variable"); 623 int indice=ObtenerIndice("Tipo de Variable");//Se obtiene el indice de la pestaña 628 624 QHBoxLayout * layoutCentralWidget = new QHBoxLayout; 629 625 layoutCentralWidget->addWidget(tablaEE); … … 631 627 widget->setLayout(layoutCentralWidget);//Se añade el widget y layout a la pestaña creada 632 628 formVariablesExogenas->close(); 633 connect(&actionAn,SIGNAL(triggered()),this,SLOT(slotAn())); 634 actionAn.setEnabled(true); 629 //Se activa la opcion de los multiplicadores de leontief 630 connect(&actionLa,SIGNAL(triggered()),this,SLOT(slotLa())); 631 actionLa.setEnabled(true); 635 632 636 633 /* Se crea la pestaña endogena-endogena */ … … 695 692 widget->setLayout(layoutCentralWidget);//Se añade el widget y layout a la pestaña creada 696 693 formVariablesExogenas->close(); 697 connect(&actionAn,SIGNAL(triggered()),this,SLOT(slotAn()));698 actionAn.setEnabled(true);699 694 700 695 /* Se crea la pestaña endogena-endogena */ … … 716 711 } 717 712 718 /*** Slot para calcular el coeficiente tecnico horizontal de la matriz endogena/exogena ***/ 719 void MainWindow::slotAn() 720 { 721 actionAn.setDisabled(true); 713 /*** Slot para calcular el coeficiente tecnico vertical de la matriz endogena/exogena ***/ 714 void MainWindow::EndogenaAn() 715 { 722 716 tabWidget->addTab(new QWidget,"An"); 723 717 QTableWidget *tw = findChild<QTableWidget *>("MatrizEndogenaEndogena"); … … 753 747 754 748 crearMatrizEndogena(tablaAn); 755 connect(&actionLa,SIGNAL(triggered()),this,SLOT(slotLa()));756 actionLa.setEnabled(true);757 749 } 758 750 759 751 void MainWindow::slotLa() 760 752 { 753 EndogenaAn(); 761 754 QTableWidget *tw = findChild<QTableWidget *>("MatrizAn"); 762 755 double matrizIdentidad[200][200]; … … 909 902 QMessageBox msBox(QMessageBox::Question,"Agregar cuenta","¿Está seguro que agregar la cuenta?", 910 903 QMessageBox::Yes | QMessageBox::No,this); 911 msBox.setButtonText(QMessageBox::Yes," Si");904 msBox.setButtonText(QMessageBox::Yes,"&Si"); 912 905 msBox.setDefaultButton(QMessageBox::Yes); 913 906 if(msBox.exec()==QMessageBox::Yes) … … 1001 994 QMessageBox msBox(QMessageBox::Question,"Finalizar Carga","¿Está seguro que desea finalizar?", 1002 995 QMessageBox::Yes | QMessageBox::No,this); 1003 msBox.setButtonText(QMessageBox::Yes," Si");996 msBox.setButtonText(QMessageBox::Yes,"&Si"); 1004 997 msBox.setDefaultButton(QMessageBox::Yes); 1005 998 if(msBox.exec()==QMessageBox::Yes) … … 1061 1054 tableWidget->insertRow(filas); 1062 1055 tableWidget->insertColumn(columnas); 1056 QTableWidgetItem *ColumnaTotal = new QTableWidgetItem; 1057 ColumnaTotal->setText("Total en Columna"); 1058 CellStyle(ColumnaTotal);//Estilo de la Celda 1059 ColumnaTotal->setFlags(ColumnaTotal->flags() ^ Qt::ItemIsEditable); 1063 1060 QTableWidgetItem *FilaTotal = new QTableWidgetItem; 1064 1061 FilaTotal->setText("Total en Fila"); 1062 CellStyle(FilaTotal);//Estilo de la Celda 1065 1063 FilaTotal->setFlags(FilaTotal->flags() ^ Qt::ItemIsEditable); 1066 QTableWidgetItem *ColumnaTotal = new QTableWidgetItem; 1067 ColumnaTotal->setText("Total en Columna"); 1068 ColumnaTotal->setFlags(ColumnaTotal->flags() ^ Qt::ItemIsEditable); 1069 tableWidget->setItem(columnas,inicio-1,FilaTotal); 1070 tableWidget->setItem(inicio-1,filas,ColumnaTotal); 1064 tableWidget->setItem(columnas,inicio-1,ColumnaTotal); 1065 tableWidget->setItem(inicio-1,filas,FilaTotal); 1071 1066 for(int i=inicio;i<filas;i++) 1072 1067 { … … 1087 1082 Valor1->setText(value1); 1088 1083 Valor1->setFlags(Valor1->flags() ^ Qt::ItemIsEditable); 1084 CellStyle(Valor1);//Estilo de la Celda 1089 1085 QTableWidgetItem *Valor2 = new QTableWidgetItem; 1090 1086 Valor2->setText(QString::number(SumaColumna,'f',2)); … … 1092 1088 Valor2->setText(value2); 1093 1089 Valor2->setFlags(Valor2->flags() ^ Qt::ItemIsEditable); 1090 CellStyle(Valor2);//Estilo de la Celda 1094 1091 tableWidget->setItem(filas,i,Valor1);//Inserta en Filas 1095 1092 tableWidget->setItem(i,filas,Valor2);//Inserta en Columnas 1096 1093 } 1097 1094 /* Se coloca como no editable la última celda */ 1095 QTableWidgetItem *Valor = new QTableWidgetItem; 1096 Valor->setFlags(Valor->flags() ^ Qt::ItemIsEditable); 1097 tableWidget->setItem(filas,columnas,Valor); 1098 1098 } 1099 1099 … … 1102 1102 QMessageBox msBox(QMessageBox::Question,"Restaurar Celdas","¿Desea Restaurar el titulo de todas las celdas?", 1103 1103 QMessageBox::Yes | QMessageBox::No,this); 1104 msBox.setButtonText(QMessageBox::Yes," Si");1104 msBox.setButtonText(QMessageBox::Yes,"&Si"); 1105 1105 msBox.setDefaultButton(QMessageBox::Yes); 1106 1106 if(msBox.exec()==QMessageBox::Yes) … … 1116 1116 QMessageBox msBox(QMessageBox::Question,"Modificar Cuenta","¿Desea Modificar la Cuenta Actual?", 1117 1117 QMessageBox::Yes | QMessageBox::No,this); 1118 msBox.setButtonText(QMessageBox::Yes," Si");1118 msBox.setButtonText(QMessageBox::Yes,"&Si"); 1119 1119 msBox.setDefaultButton(QMessageBox::Yes); 1120 1120 if(msBox.exec()==QMessageBox::Yes) … … 1382 1382 QList<QString> MainWindow::llenarLista(QList<QString> lista,QTableWidget *tw,int valor,int opcion) 1383 1383 { 1384 for(int i=0;i<tw->rowCount();i++) 1384 int cantidad = tw->rowCount(); 1385 for(int i=0;i<cantidad;i++) 1385 1386 { 1386 1387 if(opcion==1) … … 1433 1434 if(elementos<12) 1434 1435 { 1435 CuentaEndogenaColumna->setText("Cuentas \nE xogenas");1436 CuentaEndogenaColumna->setText("Cuentas \nEndogenas"); 1436 1437 } 1437 1438 else … … 1605 1606 } 1606 1607 } 1607 1608 mat inverse = inv(A); 1609 1610 QTableWidget *tablaLa = new QTableWidget; 1611 tablaLa->setObjectName("MatrizLa"); 1612 CrearTablaVacia(cantidad,tablaLa); 1613 for(int i=0;i<cantidad-1;i++) 1614 { 1615 for(int j=0;j<cantidad-1;j++) 1616 { 1617 double value = inverse.at(i,j); 1618 qDebug()<<"double "<<value; 1619 QTableWidgetItem *ValoraInsertar = new QTableWidgetItem(QString::number(value,'f',2)); 1620 ValoraInsertar->setFlags(ValoraInsertar->flags() ^ Qt::ItemIsEditable); 1621 tablaLa->setItem(i,j,ValoraInsertar); 1622 1623 } 1624 } 1625 tabWidget->addTab(new QWidget,"La"); 1626 int indice=ObtenerIndice("La");//Se obtiene el indice de la pestaña 1627 QHBoxLayout * layoutCentralWidget = new QHBoxLayout; 1628 layoutCentralWidget->addWidget(tablaLa); 1629 QWidget *widget = tabWidget->widget(indice); 1630 widget->setLayout(layoutCentralWidget);//Se añade el widget y layout a la pestaña creada 1608 double determinant = det(A); 1609 if(determinant==0) 1610 { 1611 QMessageBox::critical(this,"Alerta","El determinante es Nulo"); 1612 } 1613 else 1614 { 1615 mat inverse = inv(A); 1616 QTableWidget *tablaMa = new QTableWidget; 1617 tablaMa->setObjectName("MatrizMa"); 1618 CrearTablaVacia(cantidad,tablaMa); 1619 for(int i=0;i<cantidad-1;i++) 1620 { 1621 for(int j=0;j<cantidad-1;j++) 1622 { 1623 double value = inverse.at(i,j); 1624 qDebug()<<"double "<<value; 1625 QTableWidgetItem *ValoraInsertar = new QTableWidgetItem(QString::number(value,'f',2)); 1626 ValoraInsertar->setFlags(ValoraInsertar->flags() ^ Qt::ItemIsEditable); 1627 tablaMa->setItem(i,j,ValoraInsertar); 1628 1629 } 1630 } 1631 tabWidget->addTab(new QWidget,"Ma"); 1632 int indice=ObtenerIndice("Ma");//Se obtiene el indice de la pestaña 1633 QHBoxLayout * layoutCentralWidget = new QHBoxLayout; 1634 layoutCentralWidget->addWidget(tablaMa); 1635 QWidget *widget = tabWidget->widget(indice); 1636 widget->setLayout(layoutCentralWidget);//Se añade el widget y layout a la pestaña creada 1637 1638 actionLa.setDisabled(true); 1639 } 1640 1631 1641 1632 1642 … … 1683 1693 void MainWindow::setAccountTitle(QTableWidget *tw) 1684 1694 { 1695 int myinicio=99; 1685 1696 for(int i=0;i<numAccounts;i++) 1686 1697 { … … 1692 1703 int fin=SBEnd->value(); 1693 1704 QString nombreCuenta=le->text(); 1705 1706 if(myinicio>inicio) 1707 { 1708 myinicio=inicio; 1709 } 1694 1710 1695 1711 … … 1706 1722 tw->setSpan(0,inicio-1,1,espacio); 1707 1723 } 1724 ItemsNoEditable(tw,1,myinicio-1); 1708 1725 } 1709 1726 … … 1715 1732 tw->insertRow(rowcol); 1716 1733 tw->insertColumn(rowcol); 1734 ItemsNoEditable(tw,tw->rowCount()-1,tw->rowCount()); 1717 1735 } 1718 1736 else//de lo contrario se remueve … … 1783 1801 1784 1802 } 1803 1804 /* Funcion estandar para hacer algunas celdas no editables debido a que son dificiles de manipular(por motivos de colocado y borrado dinamico)*/ 1805 void MainWindow::ItemsNoEditable(QTableWidget *tw,int inicio,int fin) 1806 { 1807 noEditColZero(tw); 1808 for(int i=inicio;i<fin;i++) 1809 { 1810 QTableWidgetItem *ValoraInsertarFila = new QTableWidgetItem; 1811 ValoraInsertarFila->setFlags(ValoraInsertarFila->flags() ^ Qt::ItemIsEditable); 1812 tw->setItem(i,0,ValoraInsertarFila); 1813 QTableWidgetItem *ValoraInsertarColumna = new QTableWidgetItem; 1814 ValoraInsertarColumna->setFlags(ValoraInsertarColumna->flags() ^ Qt::ItemIsEditable); 1815 tw->setItem(0,i,ValoraInsertarColumna); 1816 1817 } 1818 } 1819 1820 /* Funcion para agregar el estilo de una celda en negrita con fondo de color azul */ 1821 void MainWindow::CellStyle(QTableWidgetItem *ti) 1822 { 1823 ti->setBackgroundColor(QColor(53,140,203)); 1824 ti->setTextColor(Qt::white); 1825 QFont font; 1826 font.setBold(true); 1827 ti->setFont(font); 1828 }
Note: See TracChangeset
for help on using the changeset viewer.