Changeset fc268a0 in mmcs for mainwindow.C
- Timestamp:
- Sep 18, 2015, 3:35:09 PM (9 years ago)
- Branches:
- master, matrices
- Children:
- 814c04d
- Parents:
- 96b0c4a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
mainwindow.C
r96b0c4a rfc268a0 14 14 connect(formLoadMatrix, SIGNAL(formAccepted(QString,int,int)), 15 15 this, SLOT(slotFormLoadMatrixAccepted(QString,int,int))); 16 } 17 18 /* Funcion para crear un nuevo proyecto */ 19 void MainWindow::slotNuevoProyecto() 20 { 21 MainWindow *mw = new MainWindow; 22 mw->show(); 16 23 } 17 24 … … 163 170 menuFile.setTitle("&Archivo"); 164 171 172 actionNewProject.setText("&Nuevo Proyecto"); 173 menuFile.addAction(&actionNewProject); 174 165 175 actionLoadMatrix.setText("&Cargar Matriz"); 166 176 menuFile.addAction(&actionLoadMatrix); … … 214 224 Modelos.setDisabled(true); 215 225 216 actionModeloClasico.setText("M ódelo &Clásico");226 actionModeloClasico.setText("Modelo &Clásico"); 217 227 actionModeloClasico.setDisabled(true); 218 228 Modelos.addAction(&actionModeloClasico); 219 229 220 actionCompararResultados.setText("(&1) Comparar Resultados(M ódelo Clásico)");230 actionCompararResultados.setText("(&1) Comparar Resultados(Modelo Clásico)"); 221 231 actionCompararResultados.setDisabled(true); 222 232 Modelos.addAction(&actionCompararResultados); 223 233 224 actionModeloNoClasico.setText("M ódelo &No Clásico");234 actionModeloNoClasico.setText("Modelo &No Clásico"); 225 235 actionModeloNoClasico.setDisabled(true); 226 236 Modelos.addAction(&actionModeloNoClasico); 227 237 228 actionCompararResultadosMNC.setText("(&2) Comparar Resultados(M ódelo No Clásico)");238 actionCompararResultadosMNC.setText("(&2) Comparar Resultados(Modelo No Clásico)"); 229 239 actionCompararResultadosMNC.setDisabled(true); 230 240 Modelos.addAction(&actionCompararResultadosMNC); 231 241 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 232 264 OpMatrices.addMenu(&Modelos); 233 265 … … 236 268 237 269 MainWindow::MainWindow() 238 : action LoadMatrix(this), actionExportMatrix(this), actionQuit(this),actionCH(this), actionCV(this),270 : actionNewProject(this),actionLoadMatrix(this), actionExportMatrix(this), actionQuit(this),actionCH(this), actionCV(this), 239 271 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) 241 274 { 242 275 tabWidget = new QTabWidget; … … 254 287 opcionFormCompararResultados = 0; 255 288 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 */ 257 291 cantidadEncadenamientos = 1; 258 292 cantidadEscenarios = 1; … … 260 294 cantidadMNC = 1; 261 295 cantidadResultadosMNC = 1; 296 cantidadPHCindidenciaiCuenta = 1; 297 cantidadPHCindidenciaiComponente = 1; 262 298 263 299 initGUI(); 264 300 301 connect(&actionNewProject,SIGNAL(triggered()),this,SLOT(slotNuevoProyecto())); 265 302 connect(&actionLoadMatrix, SIGNAL(triggered()), this, 266 303 SLOT(slotLoadMatrix())); … … 295 332 QVBoxLayout * layoutLateralWidget = new QVBoxLayout; 296 333 297 QTableWidget * tableWidget = new QTableWidget (this);334 QTableWidget * tableWidget = new QTableWidget; 298 335 tableWidget->setObjectName("TablaPrincipal");//Se le asigna nombre al objeto 299 336 QGroupBox * groupBoxAccount = new QGroupBox; … … 987 1024 } 988 1025 lw->setDisabled(true); 989 opcionCuentaExogena=1;//Se establece un valor para la variable de la opcion990 1026 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 } 1007 1030 } 1008 1031 … … 1018 1041 if(opcionCuentaExogena==1)//Si seleccionaron componentes 1019 1042 { 1020 1021 1043 int elementos = contarElementosMap(diccCuentasExogenas); 1022 1044 … … 1105 1127 clonarTabla(tablaEE,matrizEndogena,inicioExogena); 1106 1128 CalcularTotales(matrizEndogena,2); 1129 calcularTotalCuentas(matrizEndogena); 1107 1130 1108 1131 CalcularTotales(tablaEE,2); … … 1141 1164 obtenerCuentaComponentes();//Se guardan las cuentas/componentes 1142 1165 1143 //Se activa la opción de m ódelo clásico y no clásico1166 //Se activa la opción de modelo clásico 1144 1167 Modelos.setEnabled(true); 1145 1168 actionModeloClasico.setEnabled(true); 1146 1169 connect(&actionModeloClasico,SIGNAL(triggered()),this,SLOT(slotModeloClasico())); 1147 //Se activa la opción para el m ódelo no clásico1170 //Se activa la opción para el modelo no clásico 1148 1171 actionModeloNoClasico.setEnabled(true); 1149 1172 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())); 1214 1182 1215 1183 tabWidget->setCurrentIndex(indice); … … 2279 2247 int elementos = contarElementosMap(diccCuentasExogenas); 2280 2248 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 2290 2251 for(int i=3;i<inicioExogena+1;i++) 2291 2252 { … … 2300 2261 int elementos = contarElementosMap(diccCuentasExogenas); 2301 2262 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 2311 2265 int cantidad = tw->rowCount(); 2312 2266 for(int i=inicioExogena+1;i<cantidad-1;i++) … … 2330 2284 { 2331 2285 inicioExogena = tw->rowCount(); 2332 }2333 else2334 {2335 inicioExogena=count;2336 2286 } 2337 2287 foreach(int key,diccCuentasEndogenas.keys()) … … 2365 2315 int elementos = contarElementosMap(diccCuentasExogenas); 2366 2316 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 2376 2319 foreach(int key,espacioCuentasExogenas.keys()) 2377 2320 { … … 2424 2367 lista.clear(); 2425 2368 } 2369 foreach (QString key, diccCuentasComponentes.keys()) 2370 { 2371 ComponentesEndogenos.append(diccCuentasComponentes[key]); 2372 } 2426 2373 } 2427 2374 … … 2546 2493 2547 2494 /* 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++)2495 void MainWindow::crearTablaVaciaEncadenamiento(int filas, QTableWidget *tw,int columnas) 2496 { 2497 for(int j=0;j<columnas;j++) 2551 2498 { 2552 2499 tw->insertColumn(0); 2553 2500 } 2554 for(int k=0;k< columnas;k++)2501 for(int k=0;k<filas;k++) 2555 2502 { 2556 2503 tw->insertRow(k); … … 3288 3235 titlespanMatrizExgEnd(Bn); 3289 3236 3290 tabWidget->addTab(new QWidget," Ma^T");3291 int indice=ObtenerIndice(" Ma^T");3237 tabWidget->addTab(new QWidget,"Bn"); 3238 int indice=ObtenerIndice("Bn"); 3292 3239 QHBoxLayout * layoutCentralWidget = new QHBoxLayout; 3293 3240 layoutCentralWidget->addWidget(Bn); … … 3583 3530 } 3584 3531 titlespanMatrizExgEnd(Mb); 3585 tabWidget->addTab(new QWidget,"M odelo No Clásico");3586 int indice=ObtenerIndice("M odelo No Clásico");3532 tabWidget->addTab(new QWidget,"Mb"); 3533 int indice=ObtenerIndice("Mb"); 3587 3534 QHBoxLayout * layoutCentralWidget = new QHBoxLayout; 3588 3535 layoutCentralWidget->addWidget(Mb); … … 3807 3754 } 3808 3755 3756 /* Funcion que crea un vector con el total de las cuentas */ 3757 void 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 */ 3779 void 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 3795 void 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 */ 3817 void 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% */ 3857 void 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 3887 void 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 3915 void 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 3944 void 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 3969 void 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 3998 void 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 4018 void 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.