Changeset 32f758e in mmcs for mainwindow.C
- Timestamp:
- Sep 25, 2015, 11:01:29 AM (9 years ago)
- Branches:
- master
- Children:
- 37dd9aa
- Parents:
- b1ef0b1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
mainwindow.C
rb1ef0b1 r32f758e 949 949 950 950 QTableWidget *tw = findChild<QTableWidget *>("TablaPrincipal"); 951 CalcularTotales(tw,2);//Se llama a la funcion que agregue una nueva fila y columna con los totales respectivos 951 bool iguales = true; 952 CalcularTotales(tw,2,iguales);//Se llama a la funcion que agregue una nueva fila y columna con los totales respectivos 953 if(!iguales) 954 { 955 QMessageBox::warning(this,"Alerta","El Total de una(s) fila(s)\n es distinto al Total de\nuna(s) columna(s)"); 956 } 952 957 setAccountTitle(tw); 953 958 … … 968 973 } 969 974 970 void MainWindow::CalcularTotales(QTableWidget *tableWidget,int inicio)//Se calculan los totales por fila/columna 971 { 972 bool iguales = true; 975 void MainWindow::CalcularTotales(QTableWidget *tableWidget,int inicio,bool &iguales)//Se calculan los totales por fila/columna 976 { 973 977 int filas=tableWidget->rowCount(); 974 978 int columnas=tableWidget->columnCount(); … … 1027 1031 int cantidad = tableWidget->rowCount(); 1028 1032 ItemsNoEditable(tableWidget,0,inicio-1,cantidad-1); 1029 if(!iguales)1030 {1031 QMessageBox::warning(this,"Alerta","El Total de una(s) fila(s)\n es distinto al Total de\nuna(s) columna(s)");1032 }1033 1034 1033 } 1035 1034 … … 1456 1455 } 1457 1456 1458 /* Funcion para agregar el estilo de una celda en negritacon fondo de color gris (Componente) */1457 /* Funcion para agregar el estilo de una celda con fondo de color gris (Componente) */ 1459 1458 void MainWindow::CellStyleComponente(QTableWidgetItem *ti) 1460 1459 { 1461 1460 ti->setBackgroundColor(QColor(221,227,230)); 1461 } 1462 1463 /* Funcion para obtener las cuentas de la parte endogena */ 1464 QStringList MainWindow::obtenerCuentas() 1465 { 1466 QStringList cuenta; 1467 QTableWidget *tw = findChild<QTableWidget *>("MatrizEndogenaEndogena"); 1468 int count = tw->rowCount(); 1469 for(int i=2;i<count-1;i++) 1470 { 1471 QString valor = tw->item(0,i)->text(); 1472 if(!cuenta.contains(valor)) 1473 { 1474 cuenta.append(valor); 1475 } 1476 } 1477 return cuenta; 1462 1478 } 1463 1479 … … 1813 1829 calcularSubtotal(tablaEE,2,count-1,inicioExogena-1); 1814 1830 1831 bool var = false; 1815 1832 clonarTabla(tablaEE,matrizEndogena,inicioExogena); 1816 CalcularTotales(matrizEndogena,2 );1817 1818 CalcularTotales(tablaEE,2 );1833 CalcularTotales(matrizEndogena,2,var); 1834 1835 CalcularTotales(tablaEE,2,var); 1819 1836 setEndogenaExogenaCell(tablaEE,inicioExogena,elementos,true); 1820 1837 … … 2286 2303 { 2287 2304 QStringList list; 2288 diccCuentasComponentes.insert(diccCuentasEndogenas[key][0],list); 2305 QMap<QString,QStringList> a; 2306 a.insert(diccCuentasEndogenas[key][0],list); 2307 int clave = diccCuentasComponentes.count(); 2308 diccCuentasComponentes.insert(clave,a); 2289 2309 } 2290 2310 QStringList lista; 2291 2311 QTableWidget *tw = findChild<QTableWidget *>("MatrizEndogenaEndogena"); 2292 2312 int count = tw->rowCount(); 2293 foreach(QString key,diccCuentasComponentes.keys()) 2294 { 2295 for(int i=2;i<count-1;i++) 2296 { 2297 QString accTitle = tw->item(i,0)->text(); 2298 if(accTitle==key) 2299 { 2300 lista.append(tw->item(i,1)->text()); 2301 } 2302 } 2303 diccCuentasComponentes[key].append(lista); 2304 lista.clear(); 2313 foreach(int key,diccCuentasComponentes.keys()) 2314 { 2315 foreach (QString name, diccCuentasComponentes[key].keys()) 2316 { 2317 for(int i=2;i<count-1;i++) 2318 { 2319 QString accTitle = tw->item(i,0)->text(); 2320 if(accTitle==name) 2321 { 2322 lista.append(tw->item(i,1)->text()); 2323 } 2324 } 2325 diccCuentasComponentes[key][name].append(lista); 2326 lista.clear(); 2327 2328 } 2305 2329 } 2306 2330 for(int i=2;i<count-1;i++) … … 2444 2468 QRadioButton *ct = new QRadioButton; 2445 2469 ct->setObjectName("CTButton"); 2446 ct->setDisabled(true);2447 2470 QRadioButton *ma = new QRadioButton; 2448 2471 ma->setObjectName("MaButton"); 2449 ma->setDisabled(true);2450 2472 ct->setText("Coeficientes Técnicos"); 2451 2473 ma->setText("Multiplicadores Leontief"); … … 2502 2524 formEncadenamientos->show(); 2503 2525 opcionEncadenamientos = 1; 2504 if(opcionMa==1)2505 {2506 QRadioButton *ma = findChild<QRadioButton *>("MaButton");2507 ma->setEnabled(true);2508 QRadioButton *ct = findChild<QRadioButton *>("CTButton");2509 ct->setEnabled(true);2510 }2511 2526 } 2512 2527 else 2513 2528 { 2514 if(opcionMa==1)2515 {2516 QRadioButton *ma = findChild<QRadioButton *>("MaButton");2517 ma->setEnabled(true);2518 QRadioButton *ct = findChild<QRadioButton *>("CTButton");2519 ct->setEnabled(true);2520 }2521 2529 formEncadenamientos->show(); 2522 2530 } … … 2557 2565 lw->setDisabled(true); 2558 2566 opcionCuentaEncadenamientos=1;//Se establece un valor para la variable de la opcion 2559 diccCuentasEncadenamientos.insert(nombre_cuenta,componentes_cuenta); 2567 QMap<QString,QStringList> a; 2568 a.insert(nombre_cuenta,componentes_cuenta); 2569 int diccCount = diccCuentasEncadenamientos.count(); 2570 diccCuentasEncadenamientos.insert(diccCount,a); 2560 2571 } 2561 2572 } … … 2652 2663 { 2653 2664 int countEndogena = tw->rowCount(); 2654 int elementos = contarElementosMap(diccCuentasEncadenamientos); 2665 int elementos = 0; 2666 foreach(int key,diccCuentasEncadenamientos.keys()) 2667 { 2668 foreach(QString name,diccCuentasEncadenamientos[key].keys()) 2669 { 2670 QStringList prueba = diccCuentasEncadenamientos[key][name]; 2671 elementos += prueba.count(); 2672 } 2673 } 2655 2674 crearTablaVaciaEncadenamiento(elementos,enTable); 2656 2675 int columna=0; 2657 foreach( QStringkey,diccCuentasEncadenamientos.keys())2658 { 2659 for (int j=2;j<countEndogena;j++)2660 { 2661 QString titulo =tw->item(0,j)->text();2662 QString componente = tw->item(1,j)->text();2663 double sumaColumna = 0;2664 double sumaFila = 0;2665 if(titulo==key)2666 {2667 foreach(QString valor,diccCuentasEncadenamientos[key])2676 foreach(int key,diccCuentasEncadenamientos.keys()) 2677 { 2678 foreach(QString name,diccCuentasEncadenamientos[key].keys()) 2679 { 2680 for(int j=2;j<countEndogena;j++) 2681 { 2682 QString titulo =tw->item(0,j)->text(); 2683 QString componente = tw->item(1,j)->text(); 2684 double sumaColumna = 0; 2685 double sumaFila = 0; 2686 if(titulo==name) 2668 2687 { 2669 if(componente==valor)2688 foreach(QString valor,diccCuentasEncadenamientos[key][name]) 2670 2689 { 2671 for(int k=2;k<countEndogena;k++)2690 if(componente==valor) 2672 2691 { 2673 double EncadenamientoAtras; 2674 double EncadenamientoAdelante; 2675 if(tw->objectName()=="MatrizMa") 2692 for(int k=2;k<countEndogena;k++) 2676 2693 { 2677 EncadenamientoAtras = MatrixMa(k-2,j-2); 2678 EncadenamientoAdelante = MatrixMa(j-2,k-2); 2694 double EncadenamientoAtras; 2695 double EncadenamientoAdelante; 2696 if(tw->objectName()=="MatrizMa") 2697 { 2698 EncadenamientoAtras = MatrixMa(k-2,j-2); 2699 EncadenamientoAdelante = MatrixMa(j-2,k-2); 2700 } 2701 else 2702 { 2703 EncadenamientoAtras = tw->item(k,j)->text().toDouble();//Suma Columna(Encadenamiento hacia atras) 2704 EncadenamientoAdelante = tw->item(j,k)->text().toDouble();//Suma Fila(Encadenamiento hacia adelante) 2705 } 2706 sumaColumna+=EncadenamientoAtras; 2707 sumaFila+=EncadenamientoAdelante; 2679 2708 } 2680 else 2681 { 2682 EncadenamientoAtras = tw->item(k,j)->text().toDouble();//Suma Columna(Encadenamiento hacia atras) 2683 EncadenamientoAdelante = tw->item(j,k)->text().toDouble();//Suma Fila(Encadenamiento hacia adelante) 2684 } 2685 sumaColumna+=EncadenamientoAtras; 2686 sumaFila+=EncadenamientoAdelante; 2709 //Elementos del encadenamiento hacia atras 2710 QTableWidgetItem *valorAtras = new QTableWidgetItem(QString::number(sumaColumna,'f',precission)); 2711 QString value = Separador(valorAtras,false); 2712 valorAtras->setText(value); 2713 valorAtras->setFlags(valorAtras->flags() ^ Qt::ItemIsEditable); 2714 valorAtras->setTextAlignment(Qt::AlignCenter); 2715 enTable->setItem(columna,2,valorAtras); 2716 //Elementos del encadenamiento hacia adelante 2717 QTableWidgetItem *valorAdelante = new QTableWidgetItem(QString::number(sumaFila,'f',precission)); 2718 value = Separador(valorAdelante,false); 2719 valorAdelante->setText(value); 2720 valorAdelante->setFlags(valorAdelante->flags() ^ Qt::ItemIsEditable); 2721 valorAdelante->setTextAlignment(Qt::AlignCenter); 2722 enTable->setItem(columna,3,valorAdelante); 2723 columna++; 2687 2724 } 2688 //Elementos del encadenamiento hacia atras2689 QTableWidgetItem *valorAtras = new QTableWidgetItem(QString::number(sumaColumna,'f',precission));2690 QString value = Separador(valorAtras,false);2691 valorAtras->setText(value);2692 valorAtras->setFlags(valorAtras->flags() ^ Qt::ItemIsEditable);2693 valorAtras->setTextAlignment(Qt::AlignCenter);2694 enTable->setItem(columna,2,valorAtras);2695 //Elementos del encadenamiento hacia adelante2696 QTableWidgetItem *valorAdelante = new QTableWidgetItem(QString::number(sumaFila,'f',precission));2697 value = Separador(valorAdelante,false);2698 valorAdelante->setText(value);2699 valorAdelante->setFlags(valorAdelante->flags() ^ Qt::ItemIsEditable);2700 valorAdelante->setTextAlignment(Qt::AlignCenter);2701 enTable->setItem(columna,3,valorAdelante);2702 columna++;2703 2725 } 2704 2726 } … … 2716 2738 noEditColZero(enTable); 2717 2739 //Se agregan las cuentas y sus componentes 2718 cuentacomponentes Resultado(enTable,elementos);2740 cuentacomponentesEncadenamiento(enTable,elementos); 2719 2741 //Se agregan los totales 2720 2742 calcularTotalesEncadenamientos(enTable); … … 2729 2751 lw = findChild<QListWidget *>(QString("encadenamientosAccList %1").arg(i + 1)); 2730 2752 lw->setEnabled(true); 2753 } 2754 } 2755 2756 void MainWindow::cuentacomponentesEncadenamiento(QTableWidget *to,int count) 2757 { 2758 QStringList cuentaTitulos; 2759 noEditColZero(to); 2760 QTableWidgetItem *zero = new QTableWidgetItem; 2761 zero->setFlags(zero->flags() ^ Qt::ItemIsEditable); 2762 to->setItem(0,1,zero); 2763 int i=1; 2764 foreach(int key,diccCuentasEncadenamientos.keys()) 2765 { 2766 foreach (QString name, diccCuentasEncadenamientos[key].keys()) 2767 { 2768 foreach (QString Item, diccCuentasEncadenamientos[key][name]) 2769 { 2770 //Se agregan cuentas y componentes 2771 QString accName=name; 2772 QTableWidgetItem *cuenta = new QTableWidgetItem(accName); 2773 cuenta->setFlags(cuenta->flags() ^ Qt::ItemIsEditable); 2774 CellStyle(cuenta); 2775 QTableWidgetItem *componente = new QTableWidgetItem(Item); 2776 componente->setFlags(componente->flags() ^ Qt::ItemIsEditable); 2777 CellStyleComponente(componente); 2778 to->setItem(i,0,cuenta); 2779 to->setItem(i,1,componente); 2780 cuentaTitulos.append(accName); 2781 i++; 2782 } 2783 } 2784 } 2785 for(int i=0;i<count-1;i++) 2786 { 2787 QString accName=to->item(i+1,0)->text(); 2788 if(cuentaTitulos.contains(accName)) 2789 { 2790 int contar = cuentaTitulos.count(accName); 2791 to->setSpan(i+1,0,contar,1); 2792 cuentaTitulos.removeAll(accName); 2793 } 2794 if(cuentaTitulos.isEmpty()) 2795 { 2796 break; 2797 } 2731 2798 } 2732 2799 } … … 2804 2871 { 2805 2872 int count = tw->rowCount(); 2806 double sumaAdelante=0; 2807 double sumaAtras=0; 2808 //Se realizan los calculos 2809 for(int i=1;i<count;i++) 2810 { 2811 QString stringAtras = Separador(tw->item(i,2),true); 2812 double itemAtras = stringAtras.toDouble(); 2813 sumaAtras+=itemAtras; 2814 QString stringAdelante = Separador(tw->item(i,3),true); 2815 double itemAdelante = stringAdelante.toDouble(); 2816 sumaAdelante+=itemAdelante; 2817 } 2818 //Se inserta la fila donde iran los totales 2819 tw->insertRow(count); 2820 //Se insertan las celdas con los respectivos valores totales 2821 QTableWidgetItem *zero = new QTableWidgetItem; 2822 zero->setFlags(zero->flags() ^ Qt::ItemIsEditable); 2823 tw->setItem(count,0,zero); 2824 QTableWidgetItem *titulo = new QTableWidgetItem("Encadenamiento Parcial, Total"); 2825 encademientosStyle(titulo); 2826 tw->setItem(count,1,titulo); 2827 QTableWidgetItem *totalAtras = new QTableWidgetItem(QString::number(sumaAtras,'f',precission)); 2828 QString value = Separador(totalAtras,false); 2829 totalAtras->setText(value); 2830 encademientosStyle(totalAtras); 2831 QTableWidgetItem *totalAdelante = new QTableWidgetItem(QString::number(sumaAdelante,'f',precission)); 2832 value = Separador(totalAdelante,false); 2833 totalAdelante->setText(value); 2834 encademientosStyle(totalAdelante); 2835 tw->setItem(count,2,totalAtras); 2836 tw->setItem(count,3,totalAdelante); 2873 QStringList accName; 2874 for(int i=0;i<count-1;i++) 2875 { 2876 QString cuenta = tw->item(i+1,0)->text(); 2877 if(!accName.contains(cuenta)) 2878 { 2879 accName.append(cuenta); 2880 } 2881 } 2882 int cantidad = accName.count(); 2883 for(int k=0;k<cantidad;k++) 2884 { 2885 count = tw->rowCount(); 2886 double sumaAdelante=0; 2887 double sumaAtras=0; 2888 //Se realizan los calculos 2889 for(int i=1;i<count;i++) 2890 { 2891 if(tw->item(i,0)->text()==accName.at(k)) 2892 { 2893 QString stringAtras = Separador(tw->item(i,2),true); 2894 double itemAtras = stringAtras.toDouble(); 2895 sumaAtras+=itemAtras; 2896 QString stringAdelante = Separador(tw->item(i,3),true); 2897 double itemAdelante = stringAdelante.toDouble(); 2898 sumaAdelante+=itemAdelante; 2899 } 2900 } 2901 //Se inserta la fila donde iran los totales 2902 tw->insertRow(count); 2903 //Se insertan las celdas con los respectivos valores totales 2904 QTableWidgetItem *zero = new QTableWidgetItem; 2905 zero->setFlags(zero->flags() ^ Qt::ItemIsEditable); 2906 tw->setItem(count,0,zero); 2907 QTableWidgetItem *titulo = new QTableWidgetItem(QString("Encadenamiento Parcial %1, Total").arg(accName.at(k))); 2908 encademientosStyle(titulo); 2909 tw->setItem(count,1,titulo); 2910 QTableWidgetItem *totalAtras = new QTableWidgetItem(QString::number(sumaAtras,'f',precission)); 2911 QString value = Separador(totalAtras,false); 2912 totalAtras->setText(value); 2913 encademientosStyle(totalAtras); 2914 QTableWidgetItem *totalAdelante = new QTableWidgetItem(QString::number(sumaAdelante,'f',precission)); 2915 value = Separador(totalAdelante,false); 2916 totalAdelante->setText(value); 2917 encademientosStyle(totalAdelante); 2918 tw->setItem(count,2,totalAtras); 2919 tw->setItem(count,3,totalAdelante); 2920 } 2837 2921 } 2838 2922 … … 3632 3716 QWidget *widget = tabWidget->widget(indice); 3633 3717 widget->setLayout(layoutCentralWidget); 3634 tabWidget-> setCurrentIndex(indice);3718 tabWidget->removeTab(indice); 3635 3719 } 3636 3720 … … 3951 4035 FI = new FormIncidenciaI(this); 3952 4036 QTableWidget *tw = FI->ui->TableIncidencia; 3953 int cuentas = totalCuentas.count(); 4037 QStringList nombreCuenta = obtenerCuentas(); 4038 int cuentas = nombreCuenta.count(); 3954 4039 crearTablaVaciaEncadenamiento(2,tw,cuentas); 3955 QStringList nombreCuenta = totalCuentas.keys();3956 4040 for(int i=0;i<cuentas;i++) 3957 4041 { … … 3974 4058 { 3975 4059 QTableWidget *tw = FI->ui->TableIncidencia; 3976 int cuentas = totalCuentas.count(); 4060 QStringList nombreCuenta = obtenerCuentas(); 4061 int cuentas = nombreCuenta.count(); 3977 4062 QMap<QString,double> cantidades; 3978 4063 for(int i=0;i<cuentas;i++) … … 4166 4251 QWidget *widget = tabWidget->widget(indice); 4167 4252 widget->setLayout(layoutCentralWidget); 4168 tabWidget-> setCurrentIndex(indice);4253 tabWidget->removeTab(indice); 4169 4254 opcionMBT++; 4170 4255 } … … 4258 4343 FI = new FormIncidenciaI(this); 4259 4344 QTableWidget *tw = FI->ui->TableIncidencia; 4260 int cuentas = totalCuentas.count(); 4345 QStringList nombreCuenta = obtenerCuentas(); 4346 int cuentas = nombreCuenta.count(); 4261 4347 crearTablaVaciaEncadenamiento(2,tw,cuentas); 4262 QStringList nombreCuenta = totalCuentas.keys();4263 4348 for(int i=0;i<cuentas;i++) 4264 4349 { … … 4281 4366 { 4282 4367 QTableWidget *tw = FI->ui->TableIncidencia; 4283 int cuentas = totalCuentas.count(); 4368 QStringList nombreCuenta = obtenerCuentas(); 4369 int cuentas = nombreCuenta.count(); 4284 4370 QMap<QString,double> cantidades; 4285 4371 for(int i=0;i<cuentas;i++) … … 4609 4695 FI = new FormIncidenciaI(this); 4610 4696 QTableWidget *tw = FI->ui->TableIncidencia; 4611 int cuentas = totalCuentas.count();4612 crearTablaVaciaEncadenamiento(2,tw,cuentas);4613 QStringList nombreCuenta = totalCuentas.keys();4697 QStringList nombreCuenta = obtenerCuentas(); 4698 int cuentas = nombreCuenta.count(); 4699 crearTablaVaciaEncadenamiento(2,tw,cuentas); 4614 4700 for(int i=0;i<cuentas;i++) 4615 4701 { … … 4643 4729 4644 4730 QTableWidget *tw = FI->ui->TableIncidencia; 4645 int cuentas = totalCuentas.count(); 4731 QStringList nombreCuenta = obtenerCuentas(); 4732 int cuentas = nombreCuenta.count(); 4646 4733 QMap<QString,double> cantidades; 4647 4734 for(int i=0;i<cuentas;i++)
Note: See TracChangeset
for help on using the changeset viewer.