Rodolfo Wilvert Reitz DESENVOLVIMENTO DE UMA FERRAMENTA PARA ANÁLISE E TRATAMENTO DE DADOS Trabalho de conclusão de curso submetido ao Curso de Bacharelado em Ciências da Computação para a obtenção do Grau de Bacharel em Ciências da Computação. Orientador: Prof. Dr. Paulo José de Freitas Filho Florianópolis 2014 Ficha de identificação da obra elaborada pelo autor através do Programa de Geração Automática da Biblioteca Universitária da UFSC. A ficha de identificação é elaborada pelo próprio autor Maiores informações em: http://portalbu.ufsc.br/ficha Rodolfo Wilvert Reitz DESENVOLVIMENTO DE UMA FERRAMENTA PARA ANÁLISE E TRATAMENTO DE DADOS Este Trabalho de conclusão de curso foi julgado aprovado para a obtenção do Tı́tulo de “Bacharel em Ciências da Computação”, e aprovado em sua forma final pelo Curso de Bacharelado em Ciências da Computação. Florianópolis, 3 de dezembro 2014. Prof. Dr. Renato Cislaghi Coordenador Banca Examinadora: Prof. Dr. Paulo José de Freitas Filho Orientador Prof. Dr. Mauro Roisenberg Prof. Dr. Sı́lvia Modesto Nassar Este trabalho é dedicado aos meus queridos pais Francisco e Arlete, e minha noiva Lı́dia que sempre me incentivaram a seguir em frente, ajudando a tornar esta conquista possı́vel. AGRADECIMENTOS A Deus por ter me dado esta oportunidade, saúde e força para superar as dificuldades. Ao meu orientador, professor Paulo, pelo suporte no tempo que lhe coube, pelas suas correções e incentivos. Aos meus pais, pelo amor, incentivo e apoio incondicional. Aos membros do laboratório que direta ou indiretamente fizeram parte da minha formação. A Petrobras pela bolsa recebida durante o desenvolvimento deste trabalho. A todos estes, o meu muito obrigado. RESUMO A análise exploratória dos dados (AED) consiste em utilizar ferramentas gráficas e descritivas para analisar um conjunto de dados afim de extrair informações sobre ele. O tratamento dos dados (TD) é uma etapa complementar a AED e consiste de estratégias afim de melhorar ou adequar o conjunto de dados. Neste trabalho é realizado um levantamento de métodos de AED e TD, que em seguida foram reunidos em uma ferramenta desenvolvida em C++ e utilizando Qt Framework para desenhar a interface gráfica. A ferramenta desenvolvida contém em termos de AED: medidas descritivas, distribuições de frequências, gráficos, detecção de valores anormais (outliers, inválidos e missings). Enquanto em termos de TD, a ferramenta desenvolvida possui funcionalidades que auxiliam a adequação dos dados, como preenchimento/estimação de valores utilizando média, regressões lineares simples ou distribuições de probabilidades. Esta ferramenta foi desenvolvida com a finalidade de ser integrada a um dos projetos do qual o autor deste trabalho participa. Palavras-chave: análise, tratamento, dados, c++, qt LISTA DE FIGURAS Figura 1 Gráfico de barras (qualitativo) . . . . . . . . . . . . . . . . . . . . . . . . . Figura 2 Gráfico de barras (quantitativo discreto) . . . . . . . . . . . . . . . Figura 3 Histograma (quantitativo contı́nuo) . . . . . . . . . . . . . . . . . . . . Figura 4 Diagrama de dispersão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 5 Gráfico de barras empilhadas . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 6 Diagrama de caixa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 7 Z-score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 8 Tela principal com dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 9 Tela selecionar arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 10 Tela escolher atributos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 11 Tela tipificar atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 12 Tela definir intervalos quantitativos . . . . . . . . . . . . . . . . . . . . Figura 13 Tela definir categorias qualitativas . . . . . . . . . . . . . . . . . . . . . Figura 14 Tela editar valores fora dos intervalos ou categorias definidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 15 Tela escolher técnicas para identificar outliers . . . . . . . . . . Figura 16 Tela editar valores outliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 17 Tela editar missings e inválidos . . . . . . . . . . . . . . . . . . . . . . . . Figura 18 Tela diagrama de dispersão com dois atributos. . . . . . . . . Figura 19 Tela diagrama de dispersão com três atributos . . . . . . . . . Figura 20 Tela gráfico de barras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 21 Tela diagrama de caixa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 22 Tela edição dos dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 23 Tela remover ou identificar valores qualitativos. . . . . . . . . Figura 24 Tela remover ou identificar valores quantitativos . . . . . . . Figura 25 Tela substituir valores qualitativos . . . . . . . . . . . . . . . . . . . . . Figura 26 Tela substituir valores quantitativos . . . . . . . . . . . . . . . . . . . Figura 27 Tela gerar valor de uma DP . . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 28 Tela gerar valor de uma RLS . . . . . . . . . . . . . . . . . . . . . . . . . . Figura 29 Tela identificar outliers pelo diagrama de caixa . . . . . . . . Figura 30 Tela identificar outliers pelo teste z-score . . . . . . . . . . . . . . 40 40 40 41 42 42 44 61 63 63 64 64 65 65 66 66 67 68 68 69 69 71 71 72 72 73 73 74 74 75 LISTA DE TABELAS Tabela Tabela Tabela Tabela Tabela 1 Exemplo de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Exemplo de missings, valores inválidos e outliers . . . . . . 3 Frequências do atributo Estação . . . . . . . . . . . . . . . . . . . . . . . 4 Frequências do atributo Mês . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Frequências das classes do atributo PrecipitaçãoTotal . . 32 33 37 37 39 LISTA DE ABREVIATURAS E SIGLAS AED TD ATD SO-BR DP MLE RLS GUI IDE MVS CSV Análise exploratória dos dados . . . . . . . . . . . . . . . . . . . . . . . . . Tratamento dos dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Análise e tratamento dos dados . . . . . . . . . . . . . . . . . . . . . . . . Sistema de Otimização de Brocas . . . . . . . . . . . . . . . . . . . . . . Distribuição de probabilidades . . . . . . . . . . . . . . . . . . . . . . . . . Maximum-likelihood estimation . . . . . . . . . . . . . . . . . . . . . . . . . Regressão linear simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Graphical user interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integrated development environment . . . . . . . . . . . . . . . . . . . . Microsoft visual studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comma-separated values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 27 28 45 46 47 49 49 49 62 LISTA DE SÍMBOLOS max min µ r σ s cv qi md qs dq h k wi ws m a b α β X2 e β α Medida descritiva: maior valor em um conjunto. . . . . . . . . . . . Medida descritiva: menor valor em um conjunto . . . . . . . . . . . Medida descritiva: média aritmética simples . . . . . . . . . . . . . . . Medida descritiva: amplitude total . . . . . . . . . . . . . . . . . . . . . . . . Medida descritiva: desvio padrão da população . . . . . . . . . . . . Medida descritiva: desvio padrão da amostra . . . . . . . . . . . . . . Medida descritiva: coeficiente de variação . . . . . . . . . . . . . . . . . . Medida descritiva: quartil inferior . . . . . . . . . . . . . . . . . . . . . . . . . Medida descritiva: mediana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Medida descritiva: quartil superior . . . . . . . . . . . . . . . . . . . . . . . . Medida descritiva: desvio interquartı́lico . . . . . . . . . . . . . . . . . . . Medida descritiva: amplitude da classe . . . . . . . . . . . . . . . . . . . . Medida descritiva: total de classes . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama caixa: whisker inferior . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama caixa: whisker superior . . . . . . . . . . . . . . . . . . . . . . . . . DP: parâmetro da Triangular, . . . . . . . . . . . . . . . . . . . . . . . . . . . . DP: parâmetro da Uniforme e Triangular . . . . . . . . . . . . . . . . . . DP: parâmetro da Uniforme e Triangular . . . . . . . . . . . . . . . . . . DP: parâmetro da Gamma, Weibull e Beta . . . . . . . . . . . . . . . . DP: parâmetro da Exponencial, Gamma, Weibull e Beta . . . Teste de aderência: chi-quadrado . . . . . . . . . . . . . . . . . . . . . . . . . . Regressão linear simples: valor residual aleatório. . . . . . . . . . . Regressão linear simples: coeficiente angular da reta . . . . . . . Regressão linear simples: intersecção da reta com eixo y . . . 34 34 34 34 35 35 35 35 36 36 36 38 38 43 43 46 46 46 46 46 47 47 48 48 LISTA DE LISTAGENS 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 B.1 B.2 B.3 B.4 B.5 B.6 B.7 B.8 B.9 B.10 B.11 B.12 B.13 B.14 B.15 B.16 B.17 B.18 B.19 B.20 B.21 B.22 B.23 B.24 B.25 Classe ValorBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Classe ValorQuantitativo . . . . . . . . . . . . . . . . . . . . . . . . . . . Classe Registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Classe RegressãoLinearSimples . . . . . . . . . . . . . . . . . . . . . Classe Distribuição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Classe GeradorDistribuições . . . . . . . . . . . . . . . . . . . . . . . . Classe TabelaDeRegistros . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos definidos da classe ColetorEstatı́sticas . . . . . . . . . . Constantes da classe ColetorEstatı́sticas . . . . . . . . . . . . . Estruturas da classe ColetorEstatı́sticas . . . . . . . . . . . . . . Atributos da classe ColetorEstatı́sticas . . . . . . . . . . . . . . . Classe GeradorGráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . AnaliseTratamento.sln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AnaliseTratamento.vcxproj . . . . . . . . . . . . . . . . . . . . . . . . . AnaliseTratamento.vcxproj.filters . . . . . . . . . . . . . . . . . . . gui analise tratamento.rc . . . . . . . . . . . . . . . . . . . . . . . . . . . resource.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . main.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . escala nomes.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . grafico multibarras.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . grafico multibarras.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . grafico barras qual quant discreto.cpp . . . . . . . . . . . . . . . grafico barras qual quant discreto.h . . . . . . . . . . . . . . . . . histograma quant continuo.cpp . . . . . . . . . . . . . . . . . . . . . histograma quant continuo.h . . . . . . . . . . . . . . . . . . . . . . . item tabela editora.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . item tabela editora.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . populador.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . populador.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diagrama caixa.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diagrama caixa.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diagrama scatter.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diagrama scatter.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . thread worker coletar estatisticas.cpp . . . . . . . . . . . . . . . . thread worker coletar estatisticas.h . . . . . . . . . . . . . . . . . . dialog edicao dados.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog edicao dados.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 52 53 53 54 54 55 56 57 58 59 60 93 94 121 129 130 131 131 132 134 134 135 136 137 137 138 138 142 143 144 144 146 146 147 148 148 B.26 B.27 B.28 B.29 B.30 B.31 B.32 B.33 B.34 B.35 B.36 B.37 B.38 B.39 B.40 B.41 B.42 B.43 B.44 B.45 B.46 B.47 B.48 B.49 B.50 B.51 B.52 B.53 B.54 B.55 B.56 B.57 B.58 B.59 B.60 B.61 B.62 B.63 B.64 dialog edicao dados.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog escolher distribuicao.cpp . . . . . . . . . . . . . . . . . . . . . dialog escolher distribuicao.h . . . . . . . . . . . . . . . . . . . . . . . dialog escolher distribuicao.ui . . . . . . . . . . . . . . . . . . . . . . dialog escolher RLS.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog escolher RLS.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog escolher RLS.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog importacao dados.cpp . . . . . . . . . . . . . . . . . . . . . . . dialog importacao dados.h . . . . . . . . . . . . . . . . . . . . . . . . . dialog importacao dados.ui . . . . . . . . . . . . . . . . . . . . . . . . . dialog importacao dados pg 00 arquivo.cpp . . . . . . . . . . . dialog importacao dados pg 01 selecionar atribs.cpp . . . dialog importacao dados pg 02 tipificar.cpp . . . . . . . . . . dialog importacao dados pg 03 def interv cat.cpp . . . . . dialog importacao dados pg 04 tratar fora interv cat.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog importacao dados pg 05 tec outliers.cpp . . . . . . . dialog importacao dados pg 06 tratar outliers.cpp . . . . . dialog importacao dados pg 07 tratar missings invalidos.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog nova coluna.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog nova coluna.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog nova coluna.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog rem ide outliers.cpp . . . . . . . . . . . . . . . . . . . . . . . . . dialog rem ide outliers.h . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog rem ide outliers.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog rem ide quali.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog rem ide quali.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog rem ide quali.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog rem ide quant.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog rem ide quant.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog rem ide quant.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog renomear.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog renomear.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog renomear.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog subst qual.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog subst qual.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog subst qual.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog subst quant.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog subst quant.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dialog subst quant.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 149 150 150 151 152 153 154 157 159 169 171 172 175 178 179 181 182 184 185 185 186 188 188 189 190 191 192 193 194 196 196 197 198 200 201 203 208 209 B.65 B.66 B.67 B.68 B.69 B.70 B.71 B.72 B.73 B.74 B.75 B.76 B.77 B.78 B.79 B.80 B.81 B.82 B.83 B.84 B.85 B.86 B.87 B.88 B.89 B.90 B.91 B.92 B.93 B.94 B.95 B.96 B.97 B.98 B.99 B.100 B.101 B.102 B.103 B.104 B.105 dialog visualizar graficos.cpp . . . . . . . . . . . . . . . . . . . . . . . dialog visualizar graficos.h . . . . . . . . . . . . . . . . . . . . . . . . . dialog visualizar graficos.ui . . . . . . . . . . . . . . . . . . . . . . . . . tela inicial.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tela inicial.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tela inicial.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tela inicial.qrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget analise exploracao dados.cpp . . . . . . . . . . . . . . . . . widget analise exploracao dados.h . . . . . . . . . . . . . . . . . . . widget analise exploracao dados.ui . . . . . . . . . . . . . . . . . . widget categorias qual.cpp . . . . . . . . . . . . . . . . . . . . . . . . . widget categorias qual.h . . . . . . . . . . . . . . . . . . . . . . . . . . . widget categorias qual.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . widget distribuicao.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget distribuicao.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget distribuicao.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget escolher dp.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget escolher dp.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget escolher dp.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget intervalo quant.cpp . . . . . . . . . . . . . . . . . . . . . . . . . widget intervalo quant.h . . . . . . . . . . . . . . . . . . . . . . . . . . . widget intervalo quant.ui . . . . . . . . . . . . . . . . . . . . . . . . . . widget intervalos quant.cpp . . . . . . . . . . . . . . . . . . . . . . . . widget intervalos quant.h . . . . . . . . . . . . . . . . . . . . . . . . . . widget intervalos quant.ui . . . . . . . . . . . . . . . . . . . . . . . . . . widget param diag caixa.cpp . . . . . . . . . . . . . . . . . . . . . . . widget param diag caixa.h . . . . . . . . . . . . . . . . . . . . . . . . . widget param diag caixa.ui . . . . . . . . . . . . . . . . . . . . . . . . . widget param zscore.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . widget param zscore.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget param zscore.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget parametro.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget parametro.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget parametro.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget regressao linear simples.cpp . . . . . . . . . . . . . . . . . . widget regressao linear simples.h . . . . . . . . . . . . . . . . . . . . widget regressao linear simples.ui . . . . . . . . . . . . . . . . . . . widget tabela editora.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . widget tabela editora.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget tabela editora.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . lib analise tratamento.vcxproj . . . . . . . . . . . . . . . . . . . . . . 215 221 222 228 228 229 229 229 241 242 249 251 252 253 255 256 257 260 260 262 263 264 265 268 269 271 272 272 275 276 276 278 279 279 280 282 282 285 308 310 311 B.106 B.107 B.108 B.109 B.110 B.111 B.112 B.113 B.114 B.115 B.116 B.117 B.118 B.119 B.120 B.121 B.122 B.123 B.124 B.125 B.126 B.127 B.128 B.129 B.130 B.131 B.132 B.133 B.134 B.135 B.136 B.137 B.138 B.139 B.140 B.141 B.142 B.143 B.144 B.145 B.146 lib analise tratamento.vcxproj.filters . . . . . . . . . . . . . . . . . coletor estatisticas.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . coletor estatisticas.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . distribuicao controle.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . distribuicao controle.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . enums at.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gerador distribuicoes.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . gerador distribuicoes.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gerador graficos.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gerador graficos.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . registro.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . registro.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . regressao linear simples.cpp . . . . . . . . . . . . . . . . . . . . . . . . regressao linear simples.h . . . . . . . . . . . . . . . . . . . . . . . . . . tabela registros.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tabela registros.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tabela registros get set registros.cpp . . . . . . . . . . . . . . . . . tabela registros get valores.cpp . . . . . . . . . . . . . . . . . . . . . tabela registros identificador.cpp . . . . . . . . . . . . . . . . . . . . tabela registros populador.cpp . . . . . . . . . . . . . . . . . . . . . . tabela registros removedor.cpp . . . . . . . . . . . . . . . . . . . . . . tabela registros substituidor.cpp . . . . . . . . . . . . . . . . . . . . valor base.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . valor qualitativo.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . valor qualitativo.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . valor quantitativo.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . valor quantitativo.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lib fit.vcxproj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lib fit.vcxproj.filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fit.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fit.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fit defs.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fit utils.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fit utils.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . freq table.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . freq table.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . freq table entry.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . freq table entry.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . base distrib.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . base distrib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . beta distrib.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 315 327 328 330 331 331 332 332 335 336 338 338 339 339 346 349 351 355 358 359 360 368 368 369 369 370 371 373 374 377 378 379 382 384 386 387 388 389 390 391 B.147 B.148 B.149 B.150 B.151 B.152 B.153 B.154 B.155 B.156 B.157 B.158 B.159 B.160 B.161 B.162 B.163 B.164 B.165 B.166 B.167 B.168 B.169 B.170 B.171 B.172 B.173 beta distrib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . expo distrib.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . expo distrib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gamm distrib.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . gamm distrib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lognorm distrib.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lognorm distrib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . norm distrib.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . norm distrib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tria distrib.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . tria distrib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . unif distrib.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . unif distrib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . weib distrib.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . weib distrib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lib utilidades.vcxproj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lib utilidades.vcxproj.filters . . . . . . . . . . . . . . . . . . . . . . . . . dialog progresso.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . widget progresso.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IObserver.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . thread worker.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . thread controller.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . thread controller.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . thread controller dialog.cpp . . . . . . . . . . . . . . . . . . . . . . . . thread controller dialog.h . . . . . . . . . . . . . . . . . . . . . . . . . . utilidades.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . utilidades.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 395 396 397 400 401 402 403 406 407 409 410 411 412 415 416 420 422 422 422 422 423 423 424 425 425 429 SUMÁRIO 1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 INTRODUÇÃO GERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 MOTIVAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 OBJETIVO GERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 OBJETIVOS ESPECÍFICOS . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 ESTRUTURA DO TRABALHO . . . . . . . . . . . . . . . . . . . . . . 2 CONCEITOS FUNDAMENTAIS . . . . . . . . . . . . . . . 2.1 ANÁLISE EXPLORATÓRIA DOS DADOS . . . . . . . . . . . . 2.1.1 Dados e atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1.1 Valores missings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1.1.1 Registros missings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1.2 Valores inválidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1.3 Valores outliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Medidas descritivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.1 Valor máximo e mı́nimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.2 Média aritmética simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.3 Amplitude total . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.4 Desvio padrão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.5 Coeficiente de variação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.6 Quartis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.7 Desvio interquartı́lico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 Distribuição de frequências . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1 Distribuição de frequências para atributos qualitativos . . . 2.1.3.2 Distribuição de frequências para atributos quantitativos . . 2.1.3.2.1 Atributos discretos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.2 Atributos contı́nuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.4 Representações gráficas . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.4.1 Histograma e gráfico de barras . . . . . . . . . . . . . . . . . . . . . . . . 2.1.4.2 Diagrama de dispersão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.4.3 Gráfico de barras empilhadas ou agrupadas . . . . . . . . . . . . . 2.1.4.4 Diagrama de caixa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.5 Identificação de valores outliers, inválidos ou missings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.5.1 Identificação de outliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.5.1.1 Teste Z-score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.5.1.2 Diagrama de caixa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.5.2 Identificação de valores inválidos . . . . . . . . . . . . . . . . . . . . . . 27 27 28 29 29 29 31 31 31 32 32 32 33 34 34 34 34 34 35 35 36 36 36 37 37 37 39 39 40 41 42 43 43 43 44 44 2.1.5.3 Identificação de valores e registros missings . . . . . . . . . . . . . 2.2 TRATAMENTO DOS DADOS . . . . . . . . . . . . . . . . . . . . . . . 2.3 DISTRIBUIÇÕES DE PROBABILIDADES . . . . . . . . . . . . 2.3.1 Testes de aderência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1.1 Teste chi-quadrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 REGRESSÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Regressão linear simples . . . . . . . . . . . . . . . . . . . . . . . . . . 3 DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . . . . 3.1 METODOLOGIA DE TRABALHO . . . . . . . . . . . . . . . . . . . 3.2 ORGANIZAÇÃO E FUNCIONAMENTO . . . . . . . . . . . . . . 3.3 ASPECTOS PRINCIPAIS DE IMPLEMENTAÇÃO . . . . . 3.3.1 lib fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 lib analise tratamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.1 Classe ValorBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.1.1 Classe ValorQualitativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.1.2 Classe Valor Quantitativo . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.2 Classe Registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.3 Classe RegressãoLinearSimples . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.4 Classe Distribuição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.4.1 Classe GeradorDistribuições . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.5 Classe TabelaDeRegistros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.6 Classe ColetorEstatı́sticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.6.1 Tipos definidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.6.2 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.6.3 Estruturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.6.4 Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.6.5 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2.7 Classe GeradorGráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 INTERFACE GRÁFICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Tela principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Tela assistente de carregamento . . . . . . . . . . . . . . . . . . . 3.4.3 Tela de visualização dos dados . . . . . . . . . . . . . . . . . . . . 3.4.4 Tela de edição dos dados . . . . . . . . . . . . . . . . . . . . . . . . . . 4 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 ALTERAÇÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 TRABALHOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ANEXO A -- Artigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . ANEXO B -- Código fonte . . . . . . . . . . . . . . . . . . . . . . 45 45 45 46 46 47 47 49 49 49 50 50 51 51 52 52 52 53 54 54 55 56 56 57 57 59 59 60 60 61 62 67 70 77 77 78 81 85 93 27 1 INTRODUÇÃO 1.1 INTRODUÇÃO GERAL Segundo Gantz e Reinsel (2007), estima-se que a quantidade total de informações digitais presente no universo entre os anos de 2006 a 2010 aumentaria de 161 para 988 exabytes, um crescimento esperado anualmente de 57%. Este massivo incremento é um dos principais aspectos tratados pelo Big Data e sua causa está fortemente relacionada com a popularização de equipamentos de captura imagem, vı́deo e áudio. Entretanto, uma outro motivo se deve, segundo Lohr (2012), ao fato que atualmente a maioria dos sistemas, como as cidades inteligentes ou redes de computadores, têm consigo sensores que monitoram ao longo do tempo variáveis referentes ao sistema em questão, de modo a comunicar as medições capturadas para algo que irá utilizá-la para tomar decisões necessárias para que o sistema alcance seu objetivo. Tendo em vista esta crescente quantidade de informações, é cada vez maior a probabilidade da ocorrência de erros durante a sua captura, promovendo a redução da qualidade dos dados, de modo que eles não representem corretamente a realidade. Segundo Silva (2011), os erros mais comuns são: • De medições. • De transcrição. • Diferentes formatos de representação. • Heterogeneidade, por exemplo, quando múltiplos sensores desigualmente calibrados monitoram uma mesma variável. • Por algum motivo o valor a ser medido não estava disponı́vel no momento. Uma forma de tentar encontrar estes problemas é realizando uma AED (Análise exploratória dos dados), que consiste, segundo Reis (2008), na coleta, apresentação, análise e interpretação dos dados através de instrumentos adequados: tabelas, gráficos e indicadores. Já o TD (Tratamento dos dados) consiste em adequar os problemas identificados de modo a melhor condizer com o esperado. Ambas, AED e TD juntas podem ser chamadas de ATD (Análise e tratamento dos dados). 28 A ATD é de grande importância para as mais diversas aplicações que são baseadas em dados de entradas, dois exemplos serão listados a seguir: • Aprendizado de máquina: Área da inteligência artificial dedicada na construção de modelos computacionais que possibilitam o computador aprender (extrair regras e padrões) a partir dos dados e utilizá-lo, por exemplo, para realizar previsões. • Simulação de sistemas: Técnica utilizada com objetivo de imitar ou simular as operações de um processo em questão (sistema). A maioria dos sistemas possuem comportamento estocástico, afim de fazer com que a simulação possua o mesmo comportamento são utilizadas, por exemplo, distribuições de probabilidades para representar cada variável aleatória do sistema real, sendo que estas distribuições têm seus parâmetros obtidos através especialistas ou estimadores, contudo ambos se apoiam em dados do sistema real. Essas são duas de muitas aplicação onde a ATD é essencial para o seu funcionamento, ambas são fortemente dirigidas por dados, de modo que a qualidade dos resultados estão diretamente relacionados com a qualidade da entrada. A qualidade da entrada determina a confiança de utilizar estes sistemas para apoio à tomadas de decisões. 1.2 MOTIVAÇÃO Modelos de previsão são essenciais para qualquer sistema (transporte, produção, administrativo, etc.), pois conseguem prever os efeitos da execução de um plano e ajudam nas tomadas de decisões relacionas com questões do tipo “o que aconteceria se?”. Entretanto, a existência de dados que não condizem com a realidade podem comprometer o desempenho destes modelos. Então, se faz necessário a ATD para buscar e corrigir o maior número possı́vel de problemas afim de aumentar a qualidade dos dados e consequentemente elevar a confiança destes modelos. A principal motivação surgiu de um dos projetos que o autor deste trabalho participa durante a graduação junto ao PerformanceLab, na qual utiliza modelos computacionais para prever e otimizar o processo de perfuração de petróleo, titulado SO-BR (Sistema de Otimização de Brocas). Afim de buscar melhores resultados e dispor de algo para visualizar e editar os dados de entrada, surgiu a oportunidade 29 de integrar ao projeto um módulo de ATD, esse módulo é a ferramenta desenvolvida neste trabalho. No inı́cio, o orientador e os membros da banca deste trabalho forneceram o código fonte de um projeto já desenvolvido pelo PerformanceLab, chamado de E&P Risk, na qual contém um módulo de ATD que foi codificado por Santin (2007) em outro framework (C++ Builder) diferente do projeto SO-BR (Qt Framework). Este módulo de ATD do E&P Risk foi utilizado como apoio, porém foi amplamente melhorado em termos de codificação (bugs, otimizações), assim como novas funcionalidades foram adicionadas. Uma outra motivação é que a ferramenta desenvolvida é de uso geral para qualquer área, podendo ser facilmente integrada a qualquer outro projeto, desde que utilize o mesmo framework (Qt) e a mesma linguagem (C++), também por ser de código aberto, está disponı́vel para toda a sociedade acadêmica para utilização, estudo ou aperfeiçoamento. 1.3 OBJETIVO GERAL Desenvolvimento de uma ferramenta que forneça suporte a ATD, que posteriormente foi integrada como um módulo no SO-BR. 1.4 OBJETIVOS ESPECÍFICOS • Migrar e aperfeiçoar o módulo de ATD do E&P Risk desenvolvido em C++ Builder para Qt Framework. • Investigar os métodos de AED: medidas descritivas e representações gráficas. • Investigar estratégia de apoio ao TD, tais como preencher o valor inadequado utilizando distribuições de probabilidade ou regressões lineares. • Codificar os conceitos estudados e desenvolver uma interface gráfica que permita utilizar as técnicas de ATD estudadas. 1.5 ESTRUTURA DO TRABALHO A estrutura do trabalho se dará da forma apresentada na sequência: 30 No presente capı́tulo, apresenta-se a introdução que é composta pela introdução geral, motivação, objetivos gerais e especı́ficos e a estrutura do trabalho. O segundo capı́tulo expõe conceitos de ATD utilizadas para criar a ferramenta. No terceiro capı́tulo, é apresentado o desenvolvimento da ferramenta: metodologia, organização, funcionamento, aspectos de implementação e a interface gráfica desenvolvida. No quarto capı́tulo e último é apresenta uma conclusão contendo: lista com as principais alterações em relação ao módulo de ATD do E&P Risk, citação de algumas outras ferramentas existentes, uma breve discussão do trabalho desenvolvido e sugestões de trabalhos futuros. 31 2 CONCEITOS FUNDAMENTAIS Este capı́tulo descreve os conceitos utilizados para criar a ferramenta. 2.1 ANÁLISE EXPLORATÓRIA DOS DADOS A AED ou estatı́stica descritiva consiste, segundo MEDRI (2011), de um conjunto estratégias de organização, apresentação e sintetização dos dados, utilizando gráficos, tabelas e medidas descritivas para estudar um conjunto de dados, de modo a transformar os dados brutos em informações. Segundo Todesco (2014) a AED é utilizada, por exemplo, como pré-requisito para uma análise dos dados mais formal (Predição, Previsão, Estimação, Classificação e Testes de Hipóteses), e como parte integral formal da construção de modelos, pois dá suporte à uma melhor compreensão dos dados e eventual detecção problemas que podem diminuir o desempenho ou a confiança destes modelos. 2.1.1 Dados e atributos Os dados são geralmente organizados em forma de tabela, onde cada linha corresponde a uma observação, indivı́duo ou registro, cada coluna corresponde a uma caracterı́stica, variável ou atributo e cada célula é um valor do registro (BARBETTA; REIS; BORNIA, 2010). Neste trabalho foram utilizados os termos atributo, registro e valor . Os atributos se classificam entre quantitativos (números de certa escala) ou qualitativos (qualidade ou categoria). A Tabela 1 é um exemplo de dados climáticos provenientes do BDMEP (Banco de Dados Meteorológicos para Ensino e Pesquisa). Os atributos NumDiasPrecipitação e PrecipitaçãoTotal são considerados quantitativos, enquanto o atributo Estação é considerado qualitativo. Os atributos quantitativos ainda se dividem em dois subconjuntos: discretos e contı́nuos. Pela Tabela 1, o atributo Mês é um exemplo de atributo quantitativo discreto, pois possui valores que podem ser listados (1, 2, 3, . . . , 12), caso o atributo Mês fosse representado textualmente ele seria qualitativo. Enquanto PrecipitaçãoTotal, que pode assumir qualquer valor é um atributo quantitativo contı́nuo. Os atributos qualitativos também são classificados em ordinal e nominal, que significam respectivamente 32 a existência e inexistência de uma ordenação das categorias do atributo, porém estas duas subclassificações não foram englobadas neste trabalho. Tabela 1: Exemplo de dados id 0 1 2 3 4 5 6 Estação RS RS SC SC SP SP SP Mês 12 12 12 12 12 12 12 NumDiasPrecipitação 9 5 20 13 22 17 9 Fonte: BDMEP PrecipitaçãoTotal 134,1 48,2 138,1 35,6 186,6 236,3 70,8 2.1.1.1 Valores missings Consiste na ausência de valores, que pode ter sido provocada por falhas humanas, de software ou de hardware, ou simplesmente o valor não estava disponı́vel no momento da captura (SILVA, 2011). A Tabela 2 contém um valor missing no registro com id 0 referente ao atributo NumDiasPrecipitação. 2.1.1.1.1 Registros missings Uma outra forma de missing é quando se verifica a possı́vel ausência de registros ao analisar o comportamento de um atributo, por exemplo, na Tabela 2, se analisarmos o atributo id, ele tem comportamento sequencial e discreto, podemos notar que é possı́vel que haja um registro faltante referente ao id 2. 2.1.1.2 Valores inválidos Valores inválidos na maioria das vezes estão relacionados com atributos quantitativos, pois estes precisam seguir uma notação numérica, 33 caso contrário o valor que deveria corresponder a um número se torna um valor inválido. Este tipo de problema geralmente é causado, por exemplo, devido a falhas de transcrição, diferentes notações numéricas dependendo da região. Exemplo, “12,345.67”é uma notação numérica válida no Canadá, porém não no Brasil. Na Tabela 2, o atributo Mês pode ser representado numericamente ou textualmente, dessa forma seu tipo pode ser qualitativo ou quantitativo discreto, se for considerado quantitativo discreto o valor “Dezembro”é inválido, já que “Dezembro”não é um valor numérico. Atributos qualitativos também possuem valores inválidos, porém as categorias de um atributo qualitativos podem expressar qualquer coisa, desta forma automaticamente não podem ser detectados. 2.1.1.3 Valores outliers Outlier, valor aberrante, valor atı́pico ou ponto discrepante é um valor que apresenta um grande afastamento dos demais (SILVA, 2011). Por exemplo, a sociedade brasileira é separada em várias classes sociais, de modo que os indivı́duos de uma mesma classe tenham condições econômicas semelhantes, supondo que Bill Gates morasse no Brasil, com certeza ele seria um exemplo de outlier caso erroneamente fosse classificado pertencer a classe média, uma vez que sua condição financeira está bem acima do padrão esperado dentro da classe. Mais à frente serão apresentadas dois modos de detectar outliers para atributos quantitativos. Na Tabela 2, o valor 836,6 de PrecipitaçãoTotal é um provável outlier. Tabela 2: Exemplo de missings, valores inválidos e outliers id 0 1 3 4 5 6 Estação RS RS SC SP SP SP Mês 12 12 12 12 Dezembro 12 NumDiasPrecipitação 5 13 22 17 9 PrecipitaçãoTotal 134,1 48,2 835,6 186,6 236,3 70,8 34 2.1.2 Medidas descritivas Existem medidas que servem para descrever resumidamente os atributos quantitativos (BARBETTA; REIS; BORNIA, 2010). As mais utilizadas serão apresentadas nos tópicos a seguir. Considere {x1 , x2 , . . . , xN } uma população com N indivı́duos. 2.1.2.1 Valor máximo e mı́nimo São os valores extremos (máximo e mı́nimo) de um atributo, Equações 2.2 e 2.1 respectivamente. max = máximo{x1 , x2 , . . . , xN } (2.1) min = mínimo{x1 , x2 , . . . , xN } (2.2) 2.1.2.2 Média aritmética simples Valor tı́pico ou ponto de equilı́brio de um atributo. µ= N 1 X xi N i=1 (2.3) 2.1.2.3 Amplitude total Forma simples de representar a dispersão, pode levar a conclusões errôneas quando existem valores discrepantes. r = max − min (2.4) 2.1.2.4 Desvio padrão Comumente utilizado para representar dispersão em relação à média. A Equação 2.5 considera todos os indivı́duos de uma população, caso se tenha uma amostra de tamanho n da população deve-se usar a Equação 2.6 considerando {x1 , x2 , . . . , xn } como sendo os indivı́duos 35 da amostra e x a média da amostra. v u N u1 X σ =t (xi − µ)2 N i=1 v u u s =t (2.5) n 1 X (xi − x)2 n − 1 i=1 (2.6) Neste trabalho foi considerado apenas o desvio padrão da população. 2.1.2.5 Coeficiente de variação Expressa a variabilidade dos valores de um atributo sem considerar a ordem de grandeza do atributo. cv = σ µ (2.7) 2.1.2.6 Quartis Divide a população em quatro partes iguais, o cálculo de cada quartil deve ser feito utilizando a população ordenada ascendentemente. Dependendo do valor de N , o cálculo de cada quartil é realizado utilizando interpolação linear. A operação x mod y significa o resto da divisão inteira de x por y. • Primeiro quartil ou quartil inferior (qi ), é o valor que separa os 25% menores valores dos 75% maiores valores da população. Se (N + 3) mod 4 = 0, então qi = x N +3 4 Senão, qi = x N +3 4 + (N + 3) mod 4 ∗ − x x 4 N +3 N +3 4 4 (2.8) 36 • Mediana, valor que ocupa a posição central da população. Se N é ı́mpar md = x N +1 2 (2.9) x N + x N +2 Senão, md = 2 2 2 • Terceiro quartil ou quartil superior (qs ), valor que separa os 75% menores valores dos 25% maiores valores da população. Se (3N + 1) mod 4 = 0, então qs = x 3N +1 4 Senão, qs = x + (3N + 1) mod 4 ∗ − x x 4 3N +1 3N +1 3N +1 4 4 4 (2.10) 2.1.2.7 Desvio interquartı́lico É calculado através da diferença entre o quartil inferior e superior. Quanto mais dispersa for a distribuição dos valores de um atributo, maior será seu desvio interquartı́lico. dq = qs − qi (2.11) 2.1.3 Distribuição de frequências As contagens de indivı́duos que se enquadram a um valor ou intervalo (classe) formam a distribuição de frequências do atributo (BARBETTA; REIS; BORNIA, 2010). Algumas caracterı́sticas podem ser identificadas a partir da distribuição de frequências: valores ou intervalos que ocorrem com mais/menos frequência e possı́veis outliers. A maneira como é construı́da difere para atributos qualitativos e quantitativos, ambas serão apresentadas nas duas Seções a seguir. 2.1.3.1 Distribuição de frequências para atributos qualitativos Consiste em contar as ocorrências de cada categoria do atributo qualitativo (BARBETTA; REIS; BORNIA, 2010). A Tabela 3 é um exem- 37 plo da distribuição de frequências do atributo Estação da Tabela 1. Tabela 3: Frequências do atributo Estação Estação SC RS SP Frequência 2 2 3 2.1.3.2 Distribuição de frequências para atributos quantitativos A forma de construir a distribuição de frequências para atributos quantitativos se divide entre os atributos quantitativos discretos e contı́nuos, como apresentadas a seguir. 2.1.3.2.1 Atributos discretos A distribuição de frequências dos atributos discretos pode ser construı́da de forma análoga à atributos qualitativos, porém não são contadas as ocorrências das categorias, mas sim dos valores (BARBETTA; REIS; BORNIA, 2010), exemplo Tabela 4. Tabela 4: Frequências do atributo Mês Mês 12 Frequência 7 2.1.3.2.2 Atributos contı́nuos A construção da distribuição de frequências dos atributos quantitativos contı́nuos é realizada através da divisão do intervalo [min, max] do atributo desejado em k subintervalos (classes) de amplitude h. A quantidade de classes k para compor a distribuição de frequências é uma escolha arbitrária (BARBETTA; REIS; BORNIA, 2010). Existem técnicas que tentam estimar o número de classes. Ainda considerando N a quantidade de indivı́duos da população, algumas técnicas são: 38 • Dada uma quantidade de classes k qualquer, a amplitude h das classes é calculada pela Equação 2.12. h= max − min k (2.12) • Dada uma amplitude da classe h arbitrária, a quantidade de classe k é calculada pela Equação 2.13. max − min k= (2.13) h • Amplitude de Scott (2009), onde σ é o desvio padrão da população. 3, 5 ∗ σ h= √ (2.14) 3 N • Quantidade de classes de Hines, Montgomery e Borror (2008). √ k= N (2.15) • Quantidade de classes de Sturges (1926). k = log2 N + 1 (2.16) Neste trabalho foram utilizados os estimadores de quantidade de classes de Scott e Hines, os mesmo utilizados no E&P Risk, de modo que para N > 200 usa-se Scott, caso contrário Hines, já que segundo Scott (2009), o estimador Sturges não resulta em boas classes para gerar histogramas. Mesmo utilizados estes dois estimadores ainda foi definido uma regra na qual 25 é o número máximo de classes, mais classes que isso acaba tornando difı́cil de se obter informações do histograma. Definido a quantidade de classes (k) e a amplitude das classes (h), as classes são criadas de forma que englobem todos o valores do atributo. Construindo a tabela de frequências do atributo PrecipitaçãoTotal da Tabela 1 por Sturges: min = 36, 6 (2.17) max = 236, 3 k = log2 n + 1 = log2 7 + 1 = 4 (2.18) (2.19) 39 max − min 236, 3 − 36, 6 = = 50, 175 (2.20) k 4 C = {35, 6 85, 775; 85, 775 135, 95; 135, 95 186, 125; 186, 125 236, 3} (2.21) Contando a frequência de cada classe (Tabela 5). h= ⊥ ⊥ ⊥ ⊥ Tabela 5: Frequências das classes do atributo PrecipitaçãoTotal ⊥ PrecipitaçãoTotal 35, 6 85, 775 85, 775 135, 95 135, 95 186, 125 186, 125 236, 3 ⊥ ⊥ ⊥ Frequência 3 1 1 2 2.1.4 Representações gráficas Nesta Seção serão apresentas quatro formas de representação dos dados e suas principais caracterı́sticas. 2.1.4.1 Histograma e gráfico de barras Além das tabelas de frequências da Seção 2.1.3, o histograma e o gráfico de barras (ou colunas), são alternativas de se apresentar graficamente a distribuição de frequências de um atributo (BARBETTA; REIS; BORNIA, 2010). Em geral de forma mais sugestiva. Em ambos o comprimento, geralmente medido pelo eixo y, corresponde as frequências absolutas (ou relativas) dos valores ou intervalos dependendo do tipo do atributo, esses valores ou intervalos são geralmente representados pelo eixo x (CHAMBERS, 1983). Apesar do histograma também ser um gráfico de barras, ele se difere no fato de que suas barras estão justapostas, já que ele representa o intervalo que engloba todos os valores de um atributo quantitativo contı́nuo. As Figuras 1, 2 são exemplos de gráfico de barras de atributos qualitativos e quantitativos discretos respectivamente. Enquanto a Figura 3 é exemplo de histograma de atributos quantitativos contı́nuos. 40 Figura 1: Gráfico de barras (qualitativo) Figura 2: Gráfico de barras (quantitativo discreto) Figura 3: Histograma (quantitativo contı́nuo) 2.1.4.2 Diagrama de dispersão O diagrama de dispersão é um dos mais utilizados para análise dos dados, possibilita identificar as correlações entre os atributos (CHAMBERS, 1983). Pode representar os valores de n ≥ 2 atributos. 41 Os valores dos atributos são organizados em tuplas com n componentes que correspondem a cada um dos eixos do gráfico respectivamente, deste modo, cada tupla representa uma coordenada ou ponto no gráfico. Com objetivo de diminuir o total de dimensões do gráfico com mais de duas dimensões, pode-se substituir algumas delas de modo que os valores da dimensão substituı́da sejam representados na forma, por exemplo, de cor ou formato do ponto. A Figura 4 é um exemplo de gráfico de dispersão. Figura 4: Diagrama de dispersão 2.1.4.3 Gráfico de barras empilhadas ou agrupadas É uma extensão do gráfico de barras apresentado na Seção 2.1.4.1, porém permite representar frequências conjuntas de um grupo de atributos, geralmente dois. A apresentação das frequências conjuntas destes atributos é realizada de forma que cada coluna, visualmente identificada, represente a frequência de uma combinação de valores dos atributos. A Figura 5 é um exemplo de gráfico de barras empilhadas. 42 Figura 5: Gráfico de barras empilhadas 2.1.4.4 Diagrama de caixa O diagrama de caixa ou boxplot permitem apresentar um resumo da distribuição dos valores de um atributo (BARBETTA; REIS; BORNIA, 2010). É composto por uma caixa que corresponde ao desvio interquartı́lico de modo a englobar 50% dos valores da distribuição. A Figura 6 apresenta o diagrama de caixa do atributo PrecipitaçãoTotal da Tabela 1. As arestas horizontais na parte superior, central e inferior da caixa correspondem aos quartis superior, mediana e inferior, respectivamente. Figura 6: Diagrama de caixa 43 Os seguimentos de retas na vertical, denominados whisker, que estão conectadas ao topo e base da caixa se estendem até os valores calculados pelas Equações 2.22 e 2.23 respectivamente. ws = mínimo{qs + 1, 5 ∗ dq ; max} (2.22) wi = máximo{qi − 1, 5 ∗ dq ; min} (2.23) O diagrama de caixa é uma maneira fácil de identificar outliers. Os valores que são maiores que ws ou menores que wi são considerados outliers e são representados geralmente no gráfico de bolinhas. 2.1.5 Identificação de valores outliers, inválidos ou missings Está Seção descreve como identificar os principais fatores que influenciam a má qualidade dos dados, que são os valores outliers, inválidos e missings. 2.1.5.1 Identificação de outliers Como já definido, outliers são valores fora do padrão. Existem diversas técnicas para identificação destes, porém neste trabalho serão apresentadas nas Seções a seguir as duas técnicas comumente utilizadas. 2.1.5.1.1 Teste Z-score Z-score é uma medida de dispersão, que pode assumir valores negativos ou positivos descrevendo o deslocamento de um determinado valor em relação à média através de z desvios padrões, Equação 2.24, onde x é o valor que se deseja calcular o seu respectivo z-score. x−µ (2.24) σ O teste de z-score consiste em considerar valores que tem seus respectivos z-scores fora de um intervalo [zmin , zmax ] (SILVA, 2011). Este teste funciona bem quando a distribuição dos valores de um atributo se aproximam de uma distribuição normal, por exemplo, de acordo com a Figura 7, um intervalo [-2 , 2] engloba 95,44% do valores existentes, os demais 4,56% poderiam ser considerados outliers. z= 44 Figura 7: Z-score 2.1.5.1.2 Diagrama de caixa Como foi apresentado, o diagrama de caixa além de apresentar a dispersão dos valores de um atributo também permite identificar possı́veis valores outliers, de modo que aqueles que estejam fora do intervalo [wi , ws ] são considerados outliers (BARBETTA; REIS; BORNIA, 2010). 2.1.5.2 Identificação de valores inválidos Supondo que os dados sejam provenientes de algo que os armazene em forma de texto e deseja-se realizar uma análise destes através de um computador. Computacionalmente, textos são textos independentemente se eles representam números o computador não consegue compreender, deste modo valores de atributos considerados quantitativos em forma de texto precisam ser convertidos para tipo numérico de modo que o computador consiga compreender. Assim um valor é considerado inválido se a sua representação textual não pode ser convertida em um valor numérico entendı́vel por computadores. Já para os valores inválidos dos atributos qualitativos, não podem ser identificados automaticamente desta mesma forma, já que as categorias destes tipos de atributos podem expressar qualquer coisa, uma solução seria apresentar as categorias presentes no atributos e alguém ou algo definir o que é válido ou não. 45 2.1.5.3 Identificação de valores e registros missings Conforme apresentado, missing é a ausência de valor, a identificação deste é feita simplesmente por uma verificação, se o valor não contém nada, então ele é um valor missing. Já a identificação dos registros missings pode ser realizada observando o comportamento de um atributo X, sabendo que todos os valores de X são discretos, podemos considerar que existe um registro missing quando existe um valor discreto pertencente ao intervalo [Xmin , Xmax ] porém esse valor não pertence ao conjunto de valores de X, resumindo, consiste em identificar valores que possivelmente deveriam estar dentro do intervalo de valores do atributo X, para todos esses valores identificados, é provável que exista um registro missing. 2.2 TRATAMENTO DOS DADOS O tratamento de valores que são outliers, inválidos ou missings ou qualquer outro valor considerado inadequado pode ser realizado de maneira semelhante, podendo: • Remover o registro, entretanto pode resultar na perda de informações dos outros atributos. • Substituir o valor inadequado por um outro valor, como por exemplo a média aritmética da população ou parte dela. • Identificar uma distribuição de probabilidades que melhor corresponda ao comportamento dos valores do atributo, e a partir desta distribuição gerar um valor aleatório que substitua o valor inadequado. • Para atributos correlacionadas, pode-se fazer uso, por exemplo, de técnicas de aprendizagem de máquina, como regressões, que permitem representar as correlações entre atributos, de modo a prever qual o valor mais adequado, que condiga com o comportamento da relação, deve substituir o valor incorreto. 2.3 DISTRIBUIÇÕES DE PROBABILIDADES Uma DP (Distribuição de probabilidades) é uma função matemática que descreve a probabilidade de cada valor de um conjunto 46 possı́vel de valores ocorrer (FREITAS FILHO, 2008) Uma DP é utilizada para representar o comportamento aleatório de um atributo. Inúmeras são as distribuições, porém as utilizadas neste trabalho foram: Normal (µ, σ), Lognormal (µ, σ), Uniforme (a, b), Triangular (a, b, m), Exponencial (β), Gamma (α, β), Weibull (α, β) e Beta (α, β). Segundo Freitas Filho (2008), a identificação da DP segue como: • A construção da distribuição de frequências e a utilização de histogramas são muito úteis para um inferência inicial de qual DP utilizar. • Escolhida a DP é necessário estimar seus parâmetros. A maioria das distribuições utilizam como parâmetros as medidas descritivas ou parâmetros calculados a partir delas. Os parâmetros estimados para µ, σ, a, b, m, α e β são respectivamente as Equações 2.3, 2.5, 2.2, 2.1, 2.25, 2.27 e 2.26. Equações 2.27 e 2.26 por Law, Kelton e Kelton (1991) m = 3µ − (min + max) σ2 µ µ 2 β= α= σ (2.25) (2.26) (2.27) Uma outra maneira de estimar os parâmetros da distribuição é utilizando estimador de máxima verossimilhança (MLE), na qual foi utilizada na implementação da biblioteca de funções lib fit desenvolvida por Formighieri (2007), mais detalhes sobre serão apresentados na Seção 3.3.1. 2.3.1 Testes de aderência Os testes de aderência têm como objetivo verificar a qualidade da DP. De forma a observar o desvio entre a distribuição amostral e a teórica. 2.3.1.1 Teste chi-quadrado Dado dois conjuntos de valores, um composto pelas amostras observadas O = {o1 , o1 , . . . , oN } e o outro pelas amostras esperadas 47 E = {e1 , e1 , . . . , eN }. Para realizar o teste chi-quadrado é necessário construir as distribuições de frequências f o e f e para os conjuntos O e E respectivamente, Seção 2.1.3, com pelo menos 5 classes (ou intervalos). O cálculo do valor chi-quadrado é realizado utilizando a Equação 2.28, onde k é o total de classes. X2 = k 2 X (f oi − f ei ) i=1 f ei (2.28) Se as frequências observadas e esperadas estiverem próximas, o numerador da equação será pequeno e consequentemente X 2 também. Quanto menor o valor de X 2 , maior a probabilidade da DP escolhida condizer com o comportamento real. Outra forma de comparação pode ser feita utilizando o valor-p, que permite testar se hipótese de que os valores observados e esperados se coincidem é nula. Quanto maior for o valor de p, maior a probabilidade de a hipótese ser falsa. 2.4 REGRESSÕES As regressões são métodos que permitem identificar a relação entre o valor de um atributo y (dependente) e o valor de outros atributos x, z, . . . , t (independentes) de modo que permita prever ou calcular o valor de y em função dos valores de x, z, . . . , t. As relações entre os atributos podem ser de vários tipos: linear, exponencial, logarı́tmica, potência, logı́stica, etc. Neste trabalho somente será abordada a regressão linear simples. 2.4.1 Regressão linear simples A regressão linear simples (RLS) é a regressão mais básica de todas, descreve a relação linear, em forma de reta, entre dois atributos x e y, independente e dependente respectivamente (REIS, 2008). A Equação 2.29 determina a relação entre ambos os atributos, ou seja, o cálculo de y em função de x. O e é um valor residual aleatório que inclui outros fatores, além de x, que podem influenciar o valor de y, α representa a interceptação da reta com o eixo vertical e β é coeficiente angular da reta. y =α+β∗x+e (2.29) 48 Cálculo das constantes β e α, Equações 2.30 e 2.31 respectivamente, considerando {x1 , x2 , . . . , xN } e {y1 , y2 , . . . , yN } os valores dos atributos x e y respectivamente que se deseja identificar a relação. N∗ β= N P (xi ∗ yi ) − i=1 N∗ N P xi ∗ i=1 N P i=1 x2i − N P N P i=1 2 yi (2.30) xi i=1 α = µy − β ∗ µx (2.31) 49 3 DESENVOLVIMENTO Neste capı́tulo serão apresentados detalhes sobre a codificação da ferramenta. 3.1 METODOLOGIA DE TRABALHO A criação desta ferramenta consistiu basicamente em codificar os conceitos apresentados no Capı́tulo 2 e desenvolver a GUI (Graphical user interface), que permita o usuário utilizar as funcionalidades implementadas. Para criar a ferramenta foi alocada uma equipe formada apenas pelo autor e orientador deste trabalho. As atividades consistiam em estudar os conceitos necessários, solucionando eventuais dúvidas junto ao orientador e então traduzilos para uma linguagem de programação. A atividade final e a mais trabalhosa foi o desenvolvimento da interface. A linguagem de programação escolhida foi C++, na qual o autor deste trabalho tem maior experiência, além de apresentar um bom desempenho nos mais diversos problemas. Foram utilizadas as seguintes ferramentas de desenvolvimento: • Microsoft Visual Studio 2010 Ultimate x86 (MVS): Ambiente de desenvolvimento (IDE). • Qt 5.0.2 x86 MVS 2010 OpenGL: Ambiente de desenvolvimento (IDE). • Qt Visual Studio Add-in 1.2.2: Integra ao MVS a maioria das funcionalidades disponibilizadas pelo Qt. 3.2 ORGANIZAÇÃO E FUNCIONAMENTO Nesta Seção serão apresentados os principais aspectos de organização e funcionamento da ferramenta. A ferramenta foi dividida em 6 subprojetos: • lib utilidades: Biblioteca que contém funções variadas que servem de apoio para os outros projetos. 50 • lib qwt e lib qcustomplot: Bibliotecas externas para plotar gráficos. • lib fit: Biblioteca que tem como objetivo estimar parâmetros de uma DP dentre as que são suportadas a partir de um conjunto de valores de um atributo, calcular testes de aderência, assim como utilizar a DP. • lib analise tratamento: Biblioteca criada neste trabalho contendo funções de coleta de estatı́sticas, integração das DP fornecidas pela lib fit, geração das informações necessárias para os gráficos, regressões lineares e gerenciamento dos registros e seus atributos. • gui analise tratamento: É o ponto de inicialização da ferramenta e contém o código da interface. Todo o código fonte dos subprojetos, exceto lib qwt e lib qcustomplot que são facilmente encontradas na internet, pode ser encontrado no Anexo B. Nas Seções a seguir serão apresentados mais detalhes dos dois principais subprojetos trabalhados referentes a parte interna da aplicação, são eles: lib fit e lib analise tratamento. 3.3 ASPECTOS PRINCIPAIS DE IMPLEMENTAÇÃO Nesta Seção serão apresentados os principais aspectos de implementação relacionados aos subprojetos lib fit e lib analise tratamento. 3.3.1 lib fit Como já dito, a lib fit é uma biblioteca que fornece um conjunto de funções relacionadas com DPs. As seguintes funcionalidades disponibilizadas serão utilizadas pela ferramenta desenvolvida: • A partir de um conjunto de valores de um atributo estimar os parâmetros de uma DP utilizando estimador de máxima verossimilhança (MLE). • Gerar uma DP inserindo seus parâmetros manualmente. • Realizar testes de aderência através do valor-p. • Gerar um valor aleatório de acordo com uma DP criada. 51 A lib fit suporta os seguintes tipos de DPs: Normal, Lognormal, Uniforme, Triangular, Exponencial, Gamma, Weibull e Beta. 3.3.2 lib analise tratamento Nesta Seção serão apresentadas as principais classes e suas caracterı́sticas da biblioteca desenvolvida neste trabalho para ATD. Considere as seguintes detalhes: • Somente os aspectos mais importantes foram apresentados, assim nem todo o código das classes foram apresentados. • A maioria das funções de construção, destruição, obtenção (gets), atribuição (sets), entre outras e seus parâmetros foram omitidos com “. . . ”. • Muitas das funções parecem não ter retorno, pois dizem retornar void, porém por questões de desempenho a maioria dos resultados destas funções são retornados através de referências por parâmetro. 3.3.2.1 Classe ValorBase Classe abstrata, Listagem 3.1, que contém os atributos de classe missing e valorStr, que respectivamente significam se o valor é missing e sua representação em forma de texto. As funções virtuais puras, nas quais as classes herdadas são obrigadas a implementarem, são utilizadas para comparação entre dois valores e para clonar o próprio. Funções de obtenção ou construção foram omitidas por “. . . ”. 1 2 3 4 5 6 7 8 9 c l a s s Va lo rB as e { public : ... v i r t u a l b o o l o p e r a t o r <( c o n s t V al o rB as e &o u t r o ) c o n s t = 0; v i r t u a l b o o l o p e r a t o r ==(c o n s t V al or B as e &o u t r o ) c o n s t = 0; v i r t u a l V al o rB as e ∗ c l o n e ( ) c o n s t = 0 ; protected : bool missing ; 52 string 10 11 valorStr ; }; Listagem 3.1: Classe ValorBase 3.3.2.1.1 Classe ValorQualitativo É uma classe estendida de ValorBase. Nenhum atributo de classe foi acrescentado ou removido, apenas foram implementadas as funções para comparação entre objetos a e b que são das classes ValorQualitativo e ValorBase respectivamente. 3.3.2.1.2 Classe Valor Quantitativo Também é uma classe estendida de ValorBase. Foram acrescentados os atributos de classe valorDbl e f ormatoV alido que representam respectivamente o valor como um número (computacionalmente) e se o formato do mesmo é válido. Assim como a classe ValorQualitativo, foram implementados os métodos para comparação entre objetos a e b que são das classes ValorQuantitativo e ValorBase respectivamente, tais funções, funções de obtenção e de construção foram omitidas na Listagem 3.2 por “. . . ”. 1 2 3 4 5 6 7 8 c l a s s V a l o r Q u a n t i t a t i v o : p u b l i c V al or Ba se { public : ... private : double valorDbl ; bool formatoValido ; }; Listagem 3.2: Classe ValorQuantitativo 3.3.2.2 Classe Registro Classe Registro representa uma linha da tabela de dados, e contém um vetor de valores que podem ser qualitativos ou quantitativos. Funções de obtenção, atribuição, construção e destruição foram omitidas por 53 “. . . ”. 1 2 3 4 5 6 7 8 9 class Registro { public : ... bool algumValorInvalidoOuMissingNosIndices ( . . . ) ... private : v e c t o r <V al or Ba se ∗ c o n s t > v a l o r e s ; }; const ; Listagem 3.3: Classe Registro 3.3.2.3 Classe RegressãoLinearSimples Classe que representa uma RLS, apresentada na Seção 2.4.1, Listagem 3.4, funções de obtenção, construção padrão e destruição foram omitidas por “. . . ”. A construção da RLS é realizada pelo próprio construtor da classe, onde β e α são calculados com as Equações 2.30 e 2.31 respectivamente. A Equação 2.29 da RLS é implementada pela função gerarValorDependente, na qual gera um valor dependente em função de um independente. 1 2 3 4 5 6 7 8 9 10 11 c l a s s RegressaoLinearSimples { public : ... R e g r e s s a o L i n e a r S i m p l e s ( c o n s t v e c t o r <double> & v a l o r e s I n d e p e n d e n t e s , c o n s t v e c t o r <double> & valoresDependentes ) ; double gerarValorDependente ( const double valorIndependente ) const ; ... private : double alpha ; double beta ; }; Listagem 3.4: Classe RegressãoLinearSimples 54 3.3.2.4 Classe Distribuição Classe com objetivo de integrar a lib fit, Listagem 3.5. Funções de obtenção, construção, destruição e comparação foram omitidas com “. . . ”. A classe permite criar qualquer distribuição suportada pela lib fit a partir de parâmetros ou de um conjunto de valores. Também se pode criar distribuições somente a partir do tipo dela, neste caso os parâmetros serão os padrões. 1 2 3 4 5 6 class Distribuicao { public : ... double g e r a r V a l o r A l e a t o r i o ( ) const ; ... 7 8 9 10 11 12 private : fit : : base distrib ∗ fitDistribuicao ; fit : : distribution type tipo ; double valorP ; bool valorPValido ; 13 void gerarDistribuicaoDeValores ( . . . ) ; void gerarDistribuicaoDeParametros ( . . . ) ; void calcularValorP ( . . . ) ; 14 15 16 17 }; Listagem 3.5: Classe Distribuição 3.3.2.4.1 Classe GeradorDistribuições Está classe, Listagem 3.6, serve de apoio a classe Distribuição, sua função é gerar, a partir de um conjunto de valores de um atributo, todas as distribuições suportadas pela lib fit, de modo que as DPs sejam separadas em duas listas, geradas com sucesso e as com falhas. A lista de DPs construı́das com sucesso é ordenada descendente de acordo com o valor-p, de modo que a primeira DP é a que melhor aderiu aos valores de um atributo. 1 2 3 class GeradorDistribuicoes { public : 55 4 5 6 7 s t a t i c void gerarTodasDistribuicoes ( . . . ) ; private : s t a t i c const f i t : : d i s t r i b u t i o n t y p e t i p o s D i s t r i [ 8 ] ; }; Listagem 3.6: Classe GeradorDistribuições 3.3.2.5 Classe TabelaDeRegistros A classe TabelaDeRegistros, Listagem 3.7, contém os registros, atributos e tipos dos atributos (qualitativo ou quantitativo contı́nuo ou discreto). Cada registro é identificado por um id e são armazenados em registros na Linha 9. Os atributos e seus tipos são armazenados em atributos e tipos, Linhas 10 e 11, respectivamente. As principais funções da classe são listadas abaixo, estas funções e outras de construção e destruição foram omitidas por “. . . ”: • Gerenciar registros, atributos e seus tipos. • Construir instâncias das classes estendidas de ValorBase de acordo com os tipos dos atributos. • Preencher coluna ou registro utilizando RLS ou DP. • Identificar ou remover registros por atributo que tenham valor: – Missing ou inválido. – Dentro de um intervalo. – Igual a outro valor. • Substituir valores que podem ser identificados pelo item acima por um valor qualquer, utilizando DP ou RLS. • Verificar se um atributo pode ser utilizado como referência para identificar possı́veis registros missings, Seção 2.1.1.1.1. 1 2 3 4 5 6 c l a s s TabelaDeRegistros { public : t y p e d e f map<s i z e t , R e g i s t r o > MapRegistros ; t y p e d e f t u p l e <double , double , Operacao> I n t e r v a l o ; ... 7 8 private : 56 MapRegistros r e g i s t r o s ; v e c t o r <s t r i n g > a t r i b u t o s ; v e c t o r <TipoDado> t i p o s ; size t totalRegistro ; size t novoRegistroIndice ; ... 9 10 11 12 13 14 15 }; Listagem 3.7: Classe TabelaDeRegistros 3.3.2.6 Classe ColetorEstatı́sticas A classe ColetorEstatı́sticas é responsável por coletar estatı́sticas dos atributos, são elas: • Medidas descritivas. • Distribuições de frequências. Mais detalhes serão apresentados nas Seções a seguir. 3.3.2.6.1 Tipos definidos Para facilitar o entendimento do que é cada atributo da classe ColetorEstatı́sticas, algumas estruturas foram renomeadas, Listagem 3.8, são elas: • ClasseQuant, Linha 4: Classe ou intervalo de um atributo quantitativo contı́nuo. • F requenciasQuantContinuo, Linha 5: Frequências de cada classe ou intervalo de um atributo quantitativo contı́nuo. • F requenciasQuantDiscreto, Linha 6: Frequências de cada valor de um atributo quantitativo discreto, porém também funciona para os contı́nuos. • F requenciasQuali, Linha 7: Frequências de cada categoria de um atributo qualitativo. 1 2 3 class ColetorEstatisticas { public : 57 typedef typedef typedef typedef 4 5 6 7 8 p a i r <double , double> ClasseQuant ; map<ClasseQuant , i n t > F r e q u e n c i a s Q u a n t C o n t i n u o ; map<double , i n t > F r e q u e n c i a s Q u a n t D i s c r e t o ; map<s t r i n g , i n t > F r e q u e n c i a s Q u a l i ; }; Listagem 3.8: Tipos definidos da classe ColetorEstatı́sticas 3.3.2.6.2 Constantes Foram definidas algumas constantes, Listagem 3.9, são elas: • F AT OR W HISKER SU P ERIOR, Linha 4: É o fator 1, 5 da Equação 2.22. • F AT OR W HISKER IN F EIROR, Linha 5: É o fator 1, 5 da Equação 2.23. • ZM IN , Linha 6: Valores com z-score menor que zmin = −2, 5 são considerados outliers. • ZM AX, Linha 7: Valores com z-score maior que zmax = 2, 5 são considerados outliers. Todas as constantes apresentadas estão relacionadas com parâmetros para identificação de outliers, porém a classe ColetorEstatı́sticas contém funções para identificar outliers que permitem outros parâmetros. 1 2 3 4 5 6 7 8 class ColetorEstatisticas { public : s t a t i c c o n s t d o u b l e FATOR WHISKER SUPERIOR ; s t a t i c c o n s t d o u b l e FATOR WhISKER INFEIROR ; s t a t i c c o n s t d o u b l e ZMIN ; s t a t i c c o n s t d o u b l e ZMAX ; }; Listagem 3.9: Constantes da classe ColetorEstatı́sticas 3.3.2.6.3 Estruturas Foram criadas duas estruturas para representarem as estatı́sticas dos atributos, Listagem 3.10, são elas: 58 • EstatisticaGeral, Linha 4: são medidas descritivas que se aplicam a ambos atributos qualitativos e quantitativos. – missings: Total de valores missings presentes no atributo. – distintos: Tamanho do conjunto de valores formado pelos valores sem repetição de um atributo. – únicos: Total de valores que são únicos dentre os valores do atributo, ou seja, valores que aparecem somente uma vez. • EstatisticaQuant, Linha 11: são medidas descritivas, Seção 2.1.2, e outras informações auxiliares, listadas a seguir, que se aplicam apenas aos atributos quantitativos: – Dois vetores com os valores outliers identificados utilizando o teste z-score e o diagrama de caixa, com os parâmetros constantes mostrados na Seção 3.3.2.6.2. – Total de valores inválidos ou missings. – Total de valores válidos. 1 2 3 4 5 6 7 8 9 class ColetorEstatisticas { public : struct EstatisticaGeral { int missings ; int distintos ; int unicos ; }; 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 struct EstatisticaQuant { d o u b l e media ; d o u b l e maximo ; double whiskerSuperiorDiagramaCaixa ; double q u a r t i l S u p e r i o r ; d o u b l e mediana ; double q u a r t i l I n f e r i o r ; double whiskerInferiorDiagramaCaixa ; d o u b l e minimo ; double desvioPadrao ; double c o e f i c i e n t e V a r i a c a o ; double amplitudeTotal ; double d e s v i o I n t e r q u a r t i l i c o ; 25 26 27 28 v e c t o r <double> o u t l i e r s D i a g r a m a C a i x a ; v e c t o r <double> o u t l i e r s Z S c o r e ; 59 int totalValoresInvalidosOuMissings ; int totalValoresValidos ; 29 30 }; 31 32 }; Listagem 3.10: Estruturas da classe ColetorEstatı́sticas 3.3.2.6.4 Atributos Os atributos da classe ColetorEstatı́sticas são as frequências e estatı́sticas de cada atributo de acordo com o tipo do mesmo. 1 2 3 4 5 6 7 8 9 class ColetorEstatisticas { private : map<s t r i n g , E s t a t i s t i c a G e r a l > e s t a t i s t i c a s G e r a i s ; map<s t r i n g , E s t a t i s t i c a Q u a n t > e s t a t i s t i c a s Q u a l i t a t i v o s ; map<s t r i n g , F r e q u e n c i a s Q u a l i > f r e q u e n c i a s Q u a l i ; map<s t r i n g , F r e q u e n c i a s Q u a n t D i s c r e t o > frequenciasQuantDisc ; map<s t r i n g , FrequenciasQuantContinuo > frequenciasQuantCont ; }; Listagem 3.11: Atributos da classe ColetorEstatı́sticas 3.3.2.6.5 Funções As principais funções da classe ColetorEstatisticas são: • Obter medidas descritivas, para cada atributo. • Construir as distribuições de frequências de cada atributo. • Calcular a média parcial, ou seja, média de um subconjunto de valores do atributo, esse subconjunto de valores pode ser filtrado a partir de valores de outros atributos. • Identificar outliers pelas técnicas do teste z-score e diagrama de caixa. 60 3.3.2.7 Classe GeradorGráficos Classe responsável por gerar as informações necessárias para realizar a plotagem das representações gráficas apresentadas na Seção 2.1.4. A função privada posicaoN oEixo retorna qual a posição do valor em um eixo qualquer, esta será o próprio valor caso o mesmo seja quantitativo, caso o valor seja qualitativo, a posição será referente ao ı́ndice da categoria. 1 2 3 4 5 6 c l a s s GeradorGraficos { public : t y p e d e f v e c t o r <double> Coordenada ; t y p e d e f v e c t o r <Coordenada> Coordenadas ; t y p e d e f v e c t o r <i n t > F r e q u e n c i a s ; 7 8 9 10 11 12 13 static static static static static static void void void void void void gerarDiagramaDispersao2v ( . . . ) ; gerarDiagramaDispersao3v ( . . . ) ; gerarGraficoBarrasQualitativo ( . . . ) ; ger arH isto gram aQua ntC onti nuo ( . . . ) ; gerarGraficoBarrasQuantDiscreto ( . . . ) ; gerarGraficoMultBarras ( . . . ) ; 14 15 16 17 private : s t a t i c double posicaoNoEixo ( . . . ) ; }; Listagem 3.12: Classe GeradorGráficos 3.4 INTERFACE GRÁFICA O desenvolvimento da interface foi a última atividade realizada e dentre todas foi a que mais exigiu tempo. As Seções a seguir apresentarão as principais telas da ferramenta, são elas: • Principal. • Assistente de carregamento de arquivo. • Edição. • Visualização. 61 3.4.1 Tela principal A tela principal, Figura 8, é semelhante ao Weka (Waikato Environment for Knowledge Analysis). Inicialmente nenhuma informação é exibida, já que nenhum dado foi carregado. Ao carregar algum dado, serão exibidas as seguintes informações: • Gerais: – Total de atributos e registros. – Lista de atributos e seus tipos. • Atributo selecionado – Tabela com medidas descritivas e a distribuição de frequências do atributo. – Total de valores missings, únicos e distintos. Para os atributos qualitativos ainda é mostrado o total de valores inválidos. – Histograma ou gráfico de barras dependendo do tipo do atributo. Figura 8: Tela principal com dados 62 3.4.2 Tela assistente de carregamento A tela de carregamento é composta por 8 etapas, de modo que as três primeiras são obrigatórias, enquanto as demais são opcionais e guiam o usuário através de uma pré-ATD. As etapas são: 1. Selecionar o arquivo que contenha os dados, Figura 9. O arquivo deve ser em formato CSV (Comma-separated values), contendo opcionalmente o nome dos atributos na primeira linha. 2. Escolher atributos (colunas) desejados, Figura 10. 3. Tipificar os atributos escolhidos, Figura 11. 4. Definir respectivamente quais intervalos, Figura 12, e categorias, Figura 13, os atributos quantitativos e qualitativos podem conter. Por padrão todos os valores são considerados. 5. Editar ou remover valores que estão fora dos intervalos ou categorias anteriormente definidos, Figura 14. 6. Escolher dentre duas técnicas, diagrama de caixa ou teste z-score, para identificar outliers, assim como definir seus parâmetros para cada atributo, Figura 15. 7. Editar, substituir ou remover valores que são considerados outliers, Figura 16. 8. Editar, substituir ou remover valores missings e inválidos, Figura 17. Nesta etapa também utilizar um atributo como referência e gerar novos registros de acordo com os valores faltantes do atributo. 63 Figura 9: Tela selecionar arquivo Figura 10: Tela escolher atributos 64 Figura 11: Tela tipificar atributos Figura 12: Tela definir intervalos quantitativos 65 Figura 13: Tela definir categorias qualitativas Figura 14: Tela editar valores fora dos intervalos ou categorias definidos 66 Figura 15: Tela escolher técnicas para identificar outliers Figura 16: Tela editar valores outliers 67 Figura 17: Tela editar missings e inválidos 3.4.3 Tela de visualização dos dados Tela que contém as representações gráficas apresentadas na Seção 2.1.4, são elas: • Diagrama de dispersão com dois e três atributos, Figuras 18 e 19 respectivamente. • Gráfico de barras empilhadas, Figura 20. • Diagrama de caixa, Figura 21. 68 Figura 18: Tela diagrama de dispersão com dois atributos. Figura 19: Tela diagrama de dispersão com três atributos 69 Figura 20: Tela gráfico de barras Figura 21: Tela diagrama de caixa 70 3.4.4 Tela de edição dos dados A tela de edição, Figura 22, possibilita ao usuário manualmente editar os valores dos registros, além de fornecer um conjunto de funcionalidades de apoio, são elas: • Remover ou adicionar atributos (colunas). • Remover ou identificar registros por categoria ou intervalo de acordo com o tipo do atributo, Figuras 23 e 24 • Substituir um conjunto de valores qualitativos por um valor que já existe ou um novo, Figura 25. • Substituir um conjunto de valores quantitativos por um valor especı́fico, média ou média parcial. Também é possı́vel construir DPs ou RLSs para preencherem os valores a serem substituı́dos. Figura 26. • Preencher valor, atributo ou registro com DPs e RLSs, Figuras 27 e 28. • Identificar outliers pelo diagrama de caixa ou teste z-score, Figuras 29 e 30 respectivamente. 71 Figura 22: Tela edição dos dados Figura 23: Tela remover ou identificar valores qualitativos 72 Figura 24: Tela remover ou identificar valores quantitativos Figura 25: Tela substituir valores qualitativos 73 Figura 26: Tela substituir valores quantitativos Figura 27: Tela gerar valor de uma DP 74 Figura 28: Tela gerar valor de uma RLS Figura 29: Tela identificar outliers pelo diagrama de caixa 75 Figura 30: Tela identificar outliers pelo teste z-score 76 77 4 CONCLUSÃO A motivação para a desenvolver esta ferramenta surgiu da necessidade de sua aplicação na área de previsão, em um dos projetos na qual o autor, orientador e membros da banca fazem parte. Contudo, a ATD é útil em qualquer área no momento que se deseja extrair informações e tratar um conjunto de dados. Embora atualmente já exista inúmeras ferramentas que possuem mais recursos para ATD, como Weka, Excel e o SEstatNet (NASSAR; WRONSCKI; OHIRA, 2014), que já existem há mais de dez anos e ainda hoje veem sendo melhorados, a ferramenta desenvolvida se diferenciou por ser facilmente integrada ao projeto SO-BR. A experiência de implementar vários conceitos estatı́sticos foi bastante enriquecedora. Além disso, fez aumentar ainda mais meus conhecimentos em programação além de muitas outras áreas da Ciência da Computação. 4.1 ALTERAÇÕES A seguir são demonstradas as principais alterações entre o módulo de ATD presente no E&P Risk e a ferramenta desenvolvida neste trabalho. • Acrescentado: – Medidas descritivas: amplitude, coeficiente de variação, quartis, desvio interquartı́lico e total de valores inválidos em um atributo quantitativo – Diagrama de dispersão com 3 atributos. – Diagrama de caixa entre as representações gráficas – No módulo de ATD do E&P Risk é possı́vel substituir um valor por outro qualquer ou a média aritmética da população. Agora é possı́vel substituir utilizando média parcial da população, ou gerando valor a partir de DPs e RLSs. – Sequência de passos que guiam o usuário através de uma pré-ATD. – Identificar/remover registros por filtros. – No módulo de ATD do E&P Risk já contém uma função para identificar valores missings, entretanto foram incluı́das 78 funções para detectar registros missings, valores outliers e inválidos. – Adicionar novas categorias em atributos qualitativos • Removido: – No módulo de ATD do E&P Risk os atributos qualitativos são classificados em ordinal e nominal. O motivo da retirada se deu pelo contexto do SO-BR não englobar essa subclassificação. – A tipificação automática presente no E&P Risk foi removida, pois no SO-BR os dados já veem tipificados do banco de dados, assim se o usuário carregar um arquivo ele terá que manualmente tipificar. • Como já apresentado no Parágrafo 2.1.3.2.2, o número máximo de classes (k) na distribuição de frequências para atributos quantitativos contı́nuos passou a ser 25. • Em termos de implementação a classe ValorBase e as que estendem dela foram criadas de afim de melhorar o desempenho, já que no módulo de ATD do E&P Risk todos os valores eram armazenados em strings (tipo texto), qualquer operação com atributos quantitativos era necessário converter computacionalmente de string para double (tipo numérico), que em termos de processamento é custoso. A classe ValorQuantitativo é uma extensão da classe ValorBase e já tem um atributo de classe que armazena o valor como um tipo numérico, dessa forma não há necessidade de realizar conversões. • A interface gráfica foi toda refeita utilizando Qt Framework. Além dessas muitas outras funcionalidades menores foram adicionadas. 4.2 TRABALHOS FUTUROS Foram alguns os conceitos de ATD implementados nesta ferramenta, outras formas poderiam ter sido implementadas, mas devido ao curto prazo não foram. Entretanto, como este trabalho estará disponı́vel para toda a sociedade, outros desenvolvedores fornecer melhorias ao código. Há inúmeros outros conceitos que podem ser incorporados a esta ferramenta. 79 As principais funcionalidades que poderiam ser acrescentadas: • Ampliar a lib fit de modo a suportar um maior número de distribuições de probabilidades, como por exemplo as distribuições discretas. • Outras formas de representações gráficas, como por exemplo: – Diagrama de caixa em forma de distribuição. – Diagrama de ramo e folhas. – Gráfico de setores. – Gráficos tridimensionais. • Mais técnicas de preenchimento/estimação de valores para os atributos correlacionadas além das RLSs, como redes neurais, árvores de decisão (ID3), etc. • Medidas descritivas que indiquem a correlação entre atributos. • Técnicas de detecção de outliers levando em consideração mais de um atributo, por exemplo utilizando clusterização (agrupamentos). 80 81 REFERÊNCIAS BARBETTA, P. A.; REIS, M. M.; BORNIA, A. C. Estatı́stica: para cursos de engenharia e informática. 3. ed. São Paulo: Atlas, 2010. CHAMBERS, J. M. Graphical methods for data analysis. United Kingdom: Chapman and Hall/CRC, 1983. FORMIGHIERI, S. Uma biblioteca de funções estatı́sticas para o apoio no desenvolvimento de aplicações com aderência de dados. 2007. FREITAS FILHO, P. J. de. Introdução à modelagem e simulação de sistemas: Com aplicações em arena. 2. ed. Florianópolis: Visual Books, 2008. GANTZ, J. F.; REINSEL, D. The expanding digital universe: A forecast of worldwide information growth through 2010. In: IDC. [S.l.], 2007. HINES, W. W.; MONTGOMERY, D. C.; BORROR, D. M. G. C. M. Probability and statistics in engineering. New Jersey: John Wiley & Sons, 2008. LAW, A. M.; KELTON, W. D.; KELTON, W. D. Simulation modeling and analysis. New York: McGraw-Hill, 1991. LOHR, S. The age of big data. New York Times, 2012. MEDRI, W. Análise exploratória de dados. v. 15, p. 05–13, 2011. Disponı́vel em: <http://www.uel.br/pos/estatisticaeducacao/ textos\_didaticos/especializacao\_estatistica.pdf>. Acesso em: 11 nov. 2014. NASSAR, S. M.; WRONSCKI, V. R.; OHIRA, M. SEstatNet: Sistema especialista para o ensino de estatı́stica na web. Florianópolis: UFSC, 2014. Disponı́vel em: <http://www.sestat.net>. Acesso em: 10 nov. de 2014. REIS, E. Estatı́stica descritiva. 7. ed. Lisboa: Sı́labo, 2008. 82 SANTIN, D. W. Integração de uma Etapa de Análise Exploratória de Dados em um Sistema de Análise de Risco para Operações de Completação e Perfuração de Poços de Petróleo. 2007. SCOTT, D. W. Multivariate density estimation: theory, practice, and visualization. New Jersey: John Wiley & Sons, 2009. SILVA, M. D. da. Um modelo para análise e tratamento de dados de demanda de energia elétrica. 2011. STURGES, H. A. The choice of a class interval. Journal of the American Statistical Association, v. 21, n. 153, p. 65–66, 1926. TODESCO, J. L. Mineração de Dados: Análise exploratória de dados. Florianópolis: UFSC, 2014. Disponı́vel em: <https://moodle.ufsc.br/>. Acesso em: 11 nov. de 2014. ANEXO A -- Artigo Desenvolvimento de uma Ferramenta para Análise e Tratamento de Dados Rodolfo W. Reitz Departamento de Informática e Estatística – Universidade Federal de Santa Catarina (UFSC) Caixa Postal 476 – 88.040-900 – Florianópolis – SC – Brasil [email protected] Abstract. This work involves a study of techniques for data analyzing and treatment, followed by the development of a tool that encompasses these techniques. The developed tool contains in terms of exploratory data analysis: descriptive measurements, frequency distributions, graphs, detection of abnormal values (outliers, invalids and missings). While in terms of data treatment, this tool has functionalities that help to improve the data, as fill or estimate values using average linear regressions or probability distributions. This tool is intended to be integrated into one of the projects that the author of this work participates. Resumo. Este trabalho envolve um estudo de técnicas para análise e tratamento de dados, seguido pelo desenvolvimento de uma ferramenta que engloba estas técnicas. A ferramenta desenvolvida contém em termos de análise exploratória de dados: medidas descritivas, distribuições de frequência, gráficos, detecção de valores anormais (outliers, inválidos e missings). Enquanto em termos de tratamento de dados, esta ferramenta tem funcionalidades que ajudam a melhorar os dados, como preencher ou estimar valores usando média, regressões lineares ou distribuições de probabilidade. Esta ferramenta teve como finalidade ser integrada a um dos projetos que o autor deste trabalho participa. 1. Introdução Estima-se que a quantidade total de informações digitais presente no universo entre os anos de 2006 a 2010 aumentaria de 161 para 988 exabytes [Gantz e Reinsel 2007], um crescimento esperado anualmente de 57%. Este massivo incremento é um dos principais aspectos tratados pelo Big Data e sua causa está fortemente relacionada com a popularização de equipamentos de captura imagem, vídeo e áudio. Entretanto, uma outro motivo se deve ao fato que atualmente a maioria dos sistemas, como as cidades inteligentes ou redes de computadores, têm consigo sensores que monitoram ao longo do tempo variáveis referentes ao sistema em questão [Lohr 2012], de modo a comunicar as medições capturadas para algo que irá utilizá-la para tomar decisões necessárias para que o sistema alcance seu objetivo. Tendo em vista esta crescente quantidade de informações, é cada vez maior a probabilidade da ocorrência de erros durante a sua captura, promovendo a redução da qualidade dos dados, de modo que eles não representem corretamente a realidade. Os erros mais comuns são [Silva 2011]: De medições. De transcrição. Diferentes formatos de representação. Heterogeneidade, por exemplo, quando múltiplos sensores desigualmente calibrados monitoram uma mesma variável. Por algum motivo o valor a ser medido não estava disponível no momento. Uma forma de tentar encontrar estes problemas é realizando uma análise exploratória dos dados (AED), que consiste na coleta, apresentação, análise e interpretação dos dados através de instrumentos adequados: tabelas, gráficos e indicadores. Já o tratamento dos dados (TD) consiste em adequar os problemas identificados de modo a melhor condizer com o esperado. Ambas, AED e TD juntas podem ser chamadas de análise e tratamento dos dados (ATD) [Reis 2008]. 1.1. Importância A ATD é de grande importância para as mais diversas aplicações que são baseadas em dados de entradas, dois exemplos serão listados a seguir: Aprendizado de máquina: Área da inteligência artificial dedicada na construção de modelos computacionais que possibilitam o computador aprender (extrair regras e padrões) a partir dos dados e utilizá-lo, por exemplo, para realizar previsões. Simulação de sistemas: Técnica utilizada com objetivo de imitar ou simular as operações de um processo em questão (sistema). A maioria dos sistemas possuem comportamento estocástico, afim de fazer com que a simulação possua o mesmo comportamento são utilizadas, por exemplo, distribuições de probabilidades para representar cada variável aleatória do sistema real, sendo que estas distribuições têm seus parâmetros obtidos através especialistas ou estimadores, contudo ambos se apoiam em dados do sistema real. Essas são duas de muitas aplicação onde a ATD é essencial para o seu funcionamento, ambas são fortemente dirigidas por dados, de modo que a qualidade dos resultados estão diretamente relacionados com a qualidade da entrada. A qualidade da entrada determina a confiança de utilizar estes sistemas para apoio à tomadas de decisões. 1.2. Motivação A principal motivação surgiu de um dos projetos que o autor deste trabalho participa durante a graduação junto ao PerformanceLab, na qual utiliza modelos computacionais para prever e otimizar o processo de perfuração de petróleo, titulado SO-BR (Sistema de Otimização de Brocas). Afim de buscar melhores resultados e dispor de algo para visualizar e editar os dados de entrada, surgiu a oportunidade de integrar ao projeto um módulo de ATD, que é a ferramenta desenvolvida neste trabalho. Inicialmente o orientador e os membros da banca deste trabalho forneceram o código fonte de um projeto já desenvolvido pelo PerformanceLab, chamado de E&P Risk, na qual contém um módulo de ATD que foi codificado por [Santin 2007] em outro framework (C++ Builder) diferente do projeto SO-BR (Qt Framework). Este módulo de ATD do E&P Risk foi utilizado como apoio, porém foi amplamente melhorado em termos de codificação (bugs, otimizações), assim como novas funcionalidades foram adicionadas. 2. Trabalho O trabalho consistiu em desenvolver de uma ferramenta que forneça suporte a ATD, que posteriormente foi integrada como um módulo no SO-BR. Mais especificamente as seguintes tarefas foram realizadas: Migrar e aperfeiçoar o módulo de ATD do E&P Risk desenvolvido em C++ Builder para Qt Framework. Investigar os métodos de AED: medidas descritivas e representações gráficas. Investigar estratégia de apoio ao TD, tais como preencher o valor inadequado utilizando distribuições de probabilidade ou regressões lineares. Codificar os conceitos estudados e desenvolver uma interface gráfica que permita utilizar as técnicas de ATD estudadas. A linguagem de programação escolhida foi C++, na qual o autor deste trabalho tem maior experiência, além de apresentar um bom desempenho nos mais diversos problemas. Foram utilizadas as seguintes ferramentas de desenvolvimento: Microsoft Visual Studio desenvolvimento (IDE). Qt 5.0.2 x86 MVS 2010 OpenGL: Ambiente de desenvolvimento (IDE). Qt Visual Studio Add-in 1.2.2: Integra ao MVS a maioria das funcionalidades disponibilizadas pelo Qt. 2010 Ultimate x86 As principais funcionalidades implementadas foram: Medidas descritivas o Total Registros Atributos Valores inválidos e missings Valores únicos e distintos de um atributo o Valores máximo e mínimo o Média o Amplitude o Desvio Padrão (MVS): Ambiente de o Coeficiente de variação o Quartis (inferior, superior e mediana) o Desvio interquartílico Distribuição de frequências Representações gráficas o Histograma o Gráfico de barras o Diagrama de dispersão o Diagrama de caixa Detecção de possíveis registros missings Detecção de valores o Missings o Inválidos o Outliers o Diagrama de caixa Teste z-score Por filtro Tratamento dados o Remover/Inserir registros e atributos o Substituir valores identificados por filtro ou específicos por Valor qualquer Média da população ou de parte dela Valores gerados a partir de distribuições de probabilidade ou regressões lineares simples Sequência de três passos para uma pré-ATD composta por o Definir respectivamente quais intervalos e categorias os atributos quantitativos e qualitativos podem conter. Por padrão todos os valores são considerados. Tratar os valores que não condizem aos intervalos e categorias definidas. o Detectar e tratar possíveis outliers. o Detectar e tratar valores ou registros missings. 3. Conclusão A motivação para a desenvolver esta ferramenta surgiu da necessidade de sua aplicação na área de previsão, em um dos projetos na qual o autor, orientador e membros da banca fazem parte. Contudo, a ATD é útil em qualquer área no momento que se deseja extrair informações e tratar um conjunto de dados. Embora atualmente já exista inúmeras ferramentas que possuem mais recursos para ATD, como Weka, Excel e o SEstatNet [Nassar, Wronscki, Ohira et al. 2014], que já existem há mais de dez anos e ainda hoje veem sendo melhorados, a ferramenta desenvolvida se diferenciou por ser facilmente integrada ao projeto SO-BR. A experiência de implementar vários conceitos estatísticos foi bastante enriquecedora. Além disso, fez aumentar ainda mais meus conhecimentos em programação além de muitas outras áreas da Ciência da Computação. Referências Gantz, J. F. e Reinsel, D. (2007). “The expanding digital universe”. IDC. Lohr, S. (2012). “The age of big data”. New York Times. Nassar, S. M., Wronscki, V. R., Ohira, M. at al (2014). “Sestatnet”. Reis, E. (2008). “Estatística descritiva”. Sílabo, Lisboa, 7 edition. Santin, D. W. (2007). “Integração de uma etapa de análise exploratória de dados em um sistema de análise de risco para operações de completação e perfuração de poços de Petróleo”. Silva, M. D. (2011). “Um modelo para análise e tratamento de dados de demanda de energia elétrica”. 90 ANEXO B -- Código fonte 93 1 ı̈¿ 2 M i c r o s o f t V i s u a l S t u d i o S o l u t i o n F i l e , Format V e r s i o n 1 1 . 0 0 3 # V i s u a l S t u d i o 2010 4 P r o j e c t ( ” {8BC9CEB8−8B4A−11D0−8D11−00A0C91BC942} ” ) = ” g u i a n a l i s e t r a t a m e n t o ” , ” A n a l i s e T r a t a m e n t o \ A n a l i s e T r a t a m e n t o . v c x p r o j ” , ” {8BFDB76B−FB12−4F8A −821B−C1B8F4B76E4C} ” 5 ProjectSection ( ProjectDependencies ) = postProject 6 {55 FB0313−A5AF−4418−A898−971E9BEE1FBC} = {55 FB0313−A5AF−4418−A898 −971E9BEE1FBC} 7 {2ABAEF46−6724−4740−9001−EE3D1760F5D7} = {2ABAEF46−6724−4740−9001− EE3D1760F5D7} 8 {E16D1D59−22F4−4120−947F−C78AC48714BD} = {E16D1D59−22F4−4120−947F− C78AC48714BD} 9 {7EF1B0C5−349A−4E03−B74C−CE33D6DC002F} = {7EF1B0C5−349A−4E03−B74C− CE33D6DC002F} 10 {7CC8E7FD−D035−45E8−AD6A−2E1B5DD9C0DC} = {7CC8E7FD−D035−45E8−AD6A−2 E1B5DD9C0DC} 11 EndProjectSection 12 E n d P r o j e c t 13 P r o j e c t ( ” {8BC9CEB8−8B4A−11D0−8D11−00A0C91BC942} ” ) = ” l i b q w t ” , ” l i b q w t \ l i b q w t . v c x p r o j ” , ” {7EF1B0C5−349A−4E03−B74C−CE33D6DC002F} ” 14 E n d P r o j e c t 15 P r o j e c t ( ” {8BC9CEB8−8B4A−11D0−8D11−00A0C91BC942} ” ) = ” l i b a n a l i s e t r a t a m e n t o ” , ” l i b a n a l i s e t r a t a m e n t o \ l i b a n a l i s e t r a t a m e n t o . v c x p r o j ” , ” {E16D1D59 −22F4−4120−947F−C78AC48714BD} ” 16 ProjectSection ( ProjectDependencies ) = postProject 17 {2ABAEF46−6724−4740−9001−EE3D1760F5D7} = {2ABAEF46−6724−4740−9001− EE3D1760F5D7} 18 {7CC8E7FD−D035−45E8−AD6A−2E1B5DD9C0DC} = {7CC8E7FD−D035−45E8−AD6A−2 E1B5DD9C0DC} 19 EndProjectSection 20 E n d P r o j e c t 21 P r o j e c t ( ” {8BC9CEB8−8B4A−11D0−8D11−00A0C91BC942} ” ) = ” l i b u t i l i d a d e s ” , ” l i b u t i l i d a d e s \ l i b u t i l i d a d e s . v c x p r o j ” , ” {2ABAEF46−6724−4740−9001− EE3D1760F5D7} ” 22 E n d P r o j e c t 23 P r o j e c t ( ” {8BC9CEB8−8B4A−11D0−8D11−00A0C91BC942} ” ) = ” l i b q c u s t o m p l o t ” , ” l i b q c u s t o m p l o t \ l i b q c u s t o m p l o t . v c x p r o j ” , ” {55 FB0313−A5AF−4418−A898 −971E9BEE1FBC} ” 24 E n d P r o j e c t 25 P r o j e c t ( ” {8BC9CEB8−8B4A−11D0−8D11−00A0C91BC942} ” ) = ” l i b f i t ” , ” l i b f i t \ l i b f i t . v c x p r o j ” , ” {7CC8E7FD−D035−45E8−AD6A−2E1B5DD9C0DC} ” 26 E n d P r o j e c t 27 G l o b a l 28 GlobalSection ( SolutionConfigurationPlatforms ) = preSolution 29 Debug | Win32 = Debug | Win32 30 R e l e a s e | Win32 = R e l e a s e | Win32 31 EndGlobalSection 32 GlobalSection ( ProjectConfigurationPlatforms ) = postSolution 33 {8BFDB76B−FB12−4F8A−821B−C1B8F4B76E4C } . Debug | Win32 . A c t i v e C f g = Debug | Win32 34 {8BFDB76B−FB12−4F8A−821B−C1B8F4B76E4C } . Debug | Win32 . B u i l d . 0 = Debug | Win32 35 {8BFDB76B−FB12−4F8A−821B−C1B8F4B76E4C } . R e l e a s e | Win32 . A c t i v e C f g = R e l e a s e | Win32 36 {8BFDB76B−FB12−4F8A−821B−C1B8F4B76E4C } . R e l e a s e | Win32 . B u i l d . 0 = R e l e a s e | Win32 37 {7EF1B0C5−349A−4E03−B74C−CE33D6DC002F } . Debug | Win32 . A c t i v e C f g = Debug | Win32 38 {7EF1B0C5−349A−4E03−B74C−CE33D6DC002F } . Debug | Win32 . B u i l d . 0 = Debug | Win32 39 {7EF1B0C5−349A−4E03−B74C−CE33D6DC002F } . R e l e a s e | Win32 . A c t i v e C f g = R e l e a s e | Win32 40 {7EF1B0C5−349A−4E03−B74C−CE33D6DC002F } . R e l e a s e | Win32 . B u i l d . 0 = R e l e a s e | Win32 41 {E16D1D59−22F4−4120−947F−C78AC48714BD } . Debug | Win32 . A c t i v e C f g = Debug | Win32 42 {E16D1D59−22F4−4120−947F−C78AC48714BD } . Debug | Win32 . B u i l d . 0 = Debug | Win32 43 {E16D1D59−22F4−4120−947F−C78AC48714BD } . R e l e a s e | Win32 . A c t i v e C f g = R e l e a s e | Win32 44 {E16D1D59−22F4−4120−947F−C78AC48714BD } . R e l e a s e | Win32 . B u i l d . 0 = R e l e a s e | Win32 45 {2ABAEF46−6724−4740−9001−EE3D1760F5D7 } . Debug | Win32 . A c t i v e C f g = Debug | Win32 46 {2ABAEF46−6724−4740−9001−EE3D1760F5D7 } . Debug | Win32 . B u i l d . 0 = Debug | Win32 47 {2ABAEF46−6724−4740−9001−EE3D1760F5D7 } . R e l e a s e | Win32 . A c t i v e C f g = R e l e a s e | Win32 48 {2ABAEF46−6724−4740−9001−EE3D1760F5D7 } . R e l e a s e | Win32 . B u i l d . 0 = R e l e a s e | Win32 94 49 50 51 52 53 54 55 56 57 58 59 60 61 {55 FB0313−A5AF−4418−A898−971E9BEE1FBC } . Debug | Win32 . A c t i v e C f g = Debug | Win32 {55 FB0313−A5AF−4418−A898−971E9BEE1FBC } . Debug | Win32 . B u i l d . 0 = Debug | Win32 {55 FB0313−A5AF−4418−A898−971E9BEE1FBC } . R e l e a s e | Win32 . A c t i v e C f g = R e l e a s e | Win32 {55 FB0313−A5AF−4418−A898−971E9BEE1FBC } . R e l e a s e | Win32 . B u i l d . 0 = R e l e a s e | Win32 {7CC8E7FD−D035−45E8−AD6A−2E1B5DD9C0DC } . Debug | Win32 . A c t i v e C f g = Debug | Win32 {7CC8E7FD−D035−45E8−AD6A−2E1B5DD9C0DC } . Debug | Win32 . B u i l d . 0 = Debug | Win32 {7CC8E7FD−D035−45E8−AD6A−2E1B5DD9C0DC } . R e l e a s e | Win32 . A c t i v e C f g = R e l e a s e | Win32 {7CC8E7FD−D035−45E8−AD6A−2E1B5DD9C0DC } . R e l e a s e | Win32 . B u i l d . 0 = R e l e a s e | Win32 EndGlobalSection GlobalSection ( SolutionProperties ) = preSolution H i d e S o l u t i o n N o d e = FALSE EndGlobalSection EndGlobal Listagem B.1: AnaliseTratamento.sln B.1 SUBPROJETO GUI ANALISE TRATAMENTO 1 ı̈¿<?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=” u t f −8”?> 2 <P r o j e c t D e f a u l t T a r g e t s=” B u i l d ” T o o l s V e r s i o n=” 4 . 0 ” xmlns=” h t t p : / / s c h e m a s . m i c r o s o f t . com/ d e v e l o p e r / m s b u i l d / 2 0 0 3 ”> 3 <ItemGroup L a b e l=” P r o j e c t C o n f i g u r a t i o n s ”> 4 <P r o j e c t C o n f i g u r a t i o n I n c l u d e=” Debug | Win32 ”> 5 <C o n f i g u r a t i o n >Debug</ C o n f i g u r a t i o n > 6 <P l a t f o r m >Win32</P l a t f o r m > 7 </ P r o j e c t C o n f i g u r a t i o n > 8 <P r o j e c t C o n f i g u r a t i o n I n c l u d e=” R e l e a s e | Win32 ”> 9 <C o n f i g u r a t i o n >R e l e a s e </ C o n f i g u r a t i o n > 10 <P l a t f o r m >Win32</P l a t f o r m > 11 </ P r o j e c t C o n f i g u r a t i o n > 12 </ItemGroup> 13 <P r o p e r t y G r o u p L a b e l=” G l o b a l s ”> 14 <P r o j e c t G u i d >{8BFDB76B−FB12−4F8A−821B−C1B8F4B76E4C}</ P r o j e c t G u i d > 15 <Keyword>Qt4VSv1 .0 </ Keyword> 16 <Pro jec tNam e>g u i a n a l i s e t r a t a m e n t o </Proj ectN ame> 17 </P r o p e r t y G r o u p> 18 <I m p o r t P r o j e c t=” $ ( VCTargetsPath ) \ M i c r o s o f t . Cpp . D e f a u l t . p r o p s ” /> 19 <P r o p e r t y G r o u p C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” L a b e l=” C o n f i g u r a t i o n ”> 20 <C o n f i g u r a t i o n T y p e >A p p l i c a t i o n </C o n f i g u r a t i o n T y p e > 21 </P r o p e r t y G r o u p> 22 <P r o p e r t y G r o u p C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” L a b e l=” C o n f i g u r a t i o n ”> 23 <C o n f i g u r a t i o n T y p e >A p p l i c a t i o n </C o n f i g u r a t i o n T y p e > 24 </P r o p e r t y G r o u p> 25 <I m p o r t P r o j e c t=” $ ( VCTargetsPath ) \ M i c r o s o f t . Cpp . p r o p s ” /> 26 <ImportGroup L a b e l=” E x t e n s i o n S e t t i n g s ”> 27 </ImportGroup> 28 <ImportGroup C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” L a b e l=” P r o p e r t y S h e e t s ”> 29 <I m p o r t P r o j e c t=” $ ( U s e r R o o t D i r ) \ M i c r o s o f t . Cpp . $ ( P l a t f o r m ) . u s e r . p r o p s ” C o n d i t i o n=” e x i s t s ( ’ $ ( U s e r R o o t D i r ) \ M i c r o s o f t . Cpp . $ ( P l a t f o r m ) . u s e r . p r o p s ’ ) ” L a b e l=” L o c a l A p p D a t a P l a t f o r m ” /> 30 </ImportGroup> 31 <ImportGroup C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” L a b e l=” P r o p e r t y S h e e t s ”> 32 <I m p o r t P r o j e c t=” $ ( U s e r R o o t D i r ) \ M i c r o s o f t . Cpp . $ ( P l a t f o r m ) . u s e r . p r o p s ” C o n d i t i o n=” e x i s t s ( ’ $ ( U s e r R o o t D i r ) \ M i c r o s o f t . Cpp . $ ( P l a t f o r m ) . u s e r . p r o p s ’ ) ” L a b e l=” L o c a l A p p D a t a P l a t f o r m ” /> 33 </ImportGroup> 34 <P r o p e r t y G r o u p L a b e l=” U s e r M a c r o s ” /> 35 <P r o p e r t y G r o u p> 36 < P r o j e c t F i l e V e r s i o n >10.0.30319.1 </ P r o j e c t F i l e V e r s i o n > 37 <C o d e A n a l y s i s R u l e S e t C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>A l l R u l e s . r u l e s e t </C o d e A n a l y s i s R u l e S e t > 95 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 <C o d e A n a l y s i s R u l e s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” /> <C o d e A n a l y s i s R u l e A s s e m b l i e s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” /> <C o d e A n a l y s i s R u l e S e t C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>A l l R u l e s . r u l e s e t </C o d e A n a l y s i s R u l e S e t > <C o d e A n a l y s i s R u l e s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” /> <C o d e A n a l y s i s R u l e A s s e m b l i e s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” /> <OutDir C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n )</OutDir> <OutDir C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n )</OutDir> </P r o p e r t y G r o u p> <I t e m D e f i n i t i o n G r o u p C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> <ClCompile> <P r e p r o c e s s o r D e f i n i t i o n s >UNICODE ; WIN32 ; QT DLL ; TCC RODOLFO ; QT CORE LIB ; QT GUI LIB ; QT WIDGETS LIB ; QT PRINTSUPPORT LIB; % ( P r e p r o c e s s o r D e f i n i t i o n s )</ P r e p r o c e s s o r D e f i n i t i o n s > <A d d i t i o n a l I n c l u d e D i r e c t o r i e s >.\ G e n e r a t e d F i l e s ; . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) ; . ; $ (QTDIR) \ i n c l u d e ; $ (QTDIR) \ i n c l u d e \ QtCore ; $ ( QTDIR) \ i n c l u d e \QtGui ; $ (QTDIR) \ i n c l u d e \ QtWidgets ; $ (QTDIR) \ i n c l u d e \ QtPrintSupport ; . . \ l i b a n a l i s e t r a t a m e n t o ; . . \ l i b u t i l i d a d e s ; . . \ l i b q w t ; . . \ l i b q c u s t o m p l o t ; % ( A d d i t i o n a l I n c l u d e D i r e c t o r i e s )</ AdditionalIncludeDirectories> <O p t i m i z a t i o n >D i s a b l e d </O p t i m i z a t i o n > <D e b u g I n f o r m a t i o n F o r m a t>ProgramDatabase </D e b u g I n f o r m a t i o n F o r m a t> <R u n t i m e L i b r a r y>MultiThreadedDebugDLL </R u n t i m e L i b r a r y> <T r e a t W C h a r t A s B u i l t I n T y p e>f a l s e </T r e a t W C h a r t A s B u i l t I n T y p e> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <O u t p u t F i l e >$ ( OutDir ) \ $ ( P r o j e c t N a m e ) . e x e </O u t p u t F i l e > <A d d i t i o n a l L i b r a r y D i r e c t o r i e s >$ (QTDIR) \ l i b ; $ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n ) ; % ( A d d i t i o n a l L i b r a r y D i r e c t o r i e s )</ AdditionalLibraryDirectories> <G e n e r a t e D e b u g I n f o r m a t i o n >t r u e </G e n e r a t e D e b u g I n f o r m a t i o n > <A d d i t i o n a l D e p e n d e n c i e s >qtmaind . l i b ; Qt5Cored . l i b ; Qt5Guid . l i b ; Qt5Widgetsd . l i b ; Q t 5 P r i n t S u p p o r t d . l i b ; l i b a n a l i s e t r a t a m e n t o . l i b ; l i b u t i l i d a d e s . l i b ; l i b q w t . l i b ; l i b q c u s t o m p l o t . l i b </ AdditionalDependencies> < P r o f i l e >f a l s e </ P r o f i l e > </Link> </ I t e m D e f i n i t i o n G r o u p > <I t e m D e f i n i t i o n G r o u p C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> <ClCompile> <P r e p r o c e s s o r D e f i n i t i o n s >UNICODE ; WIN32 ; QT DLL ; TCC RODOLFO ; QT NO DEBUG ;NDEBUG; QT CORE LIB ; QT GUI LIB ; QT WIDGETS LIB ; QT PRINTSUPPORT LIB; % ( P r e p r o c e s s o r D e f i n i t i o n s )</ PreprocessorDefinitions> <A d d i t i o n a l I n c l u d e D i r e c t o r i e s >.\ G e n e r a t e d F i l e s ; . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) ; . ; $ (QTDIR) \ i n c l u d e ; $ (QTDIR) \ i n c l u d e \ QtCore ; $ ( QTDIR) \ i n c l u d e \QtGui ; $ (QTDIR) \ i n c l u d e \ QtWidgets ; $ (QTDIR) \ i n c l u d e \ QtPrintSupport ; . . \ l i b a n a l i s e t r a t a m e n t o ; . . \ l i b u t i l i d a d e s ; . . \ l i b q w t ; . . \ l i b q c u s t o m p l o t ; % ( A d d i t i o n a l I n c l u d e D i r e c t o r i e s )</ AdditionalIncludeDirectories> <D e b u g I n f o r m a t i o n F o r m a t> </D e b u g I n f o r m a t i o n F o r m a t> <R u n t i m e L i b r a r y>MultiThreadedDLL </R u n t i m e L i b r a r y> <T r e a t W C h a r t A s B u i l t I n T y p e>f a l s e </T r e a t W C h a r t A s B u i l t I n T y p e> <S h o w I n c l u d e s >f a l s e </S h o w I n c l u d e s > </ClCompile> <Link> <SubSystem>Windows</SubSystem> <O u t p u t F i l e >$ ( OutDir ) \ $ ( P r o j e c t N a m e ) . e x e </O u t p u t F i l e > <A d d i t i o n a l L i b r a r y D i r e c t o r i e s >$ (QTDIR) \ l i b ; $ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n ) ; % ( A d d i t i o n a l L i b r a r y D i r e c t o r i e s )</ AdditionalLibraryDirectories> <G e n e r a t e D e b u g I n f o r m a t i o n >f a l s e </G e n e r a t e D e b u g I n f o r m a t i o n > <A d d i t i o n a l D e p e n d e n c i e s >q t m a i n . l i b ; Qt5Core . l i b ; Qt5Gui . l i b ; Qt5Widgets . l i b ; Qt5PrintSupport . l i b ; l i b a n a l i s e t r a t a m e n t o . l i b ; l i b u t i l i d a d e s . l i b ; l i b q w t . l i b ; l i b q c u s t o m p l o t . l i b </ AdditionalDependencies> < P r o f i l e >f a l s e </ P r o f i l e > </Link> </ I t e m D e f i n i t i o n G r o u p > <ItemGroup> <C l C o m p i l e I n c l u d e=” d i a g r a m a c a i x a . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a g r a m a s c a t t e r . cpp ” /> 96 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 <C l C o m p i l e I n c l u d e=” d i a l o g e s c o l h e r R L S . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 3 d e f i n t e r v c a t . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 0 a r q u i v o . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 1 s e l e c i o n a r a t r i b s . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 5 t e c o u t l i e r s . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 2 t i p i f i c a r . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 4 t r a t a r f o r a i n t e r v c a t . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 7 t r a t a r m i s s i n g s i n v a l i d o s . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 6 t r a t a r o u t l i e r s . cpp ” /> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g e d i c a o d a d o s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g e s c o l h e r d i s t r i b u i c a o . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g e s c o l h e r R L S . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g i m p o r t a c a o d a d o s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g n o v a c o l u n a . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g r e m i d e o u t l i e r s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g r e m i d e q u a l i . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g r e m i d e q u a n t . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g r e n o m e a r . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g s u b s t q u a l . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g s u b s t q u a n t . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g v i s u a l i z a r g r a f i c o s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c g r a f i c o m u l t i b a r r a s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c h i s t o g r a m a q u a n t c o n t i n u o . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c t e l a i n i c i a l . cpp ”> 97 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t a n a l i s e e x p l o r a c a o d a d o s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t c a t e g o r i a s q u a l . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t d i s t r i b u i c a o . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t e s c o l h e r d p . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t i n t e r v a l o s q u a n t . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t i n t e r v a l o q u a n t . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t p a r a m e t r o . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t p a r a m d i a g c a i x a . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t p a r a m z s c o r e . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t r e g r e s s a o l i n e a r s i m p l e s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t t a b e l a e d i t o r a . cpp ” > <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ q r c t e l a i n i c i a l . cpp ”> <P r e c o m p i l e d H e a d e r C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> </P r e c o m p i l e d H e a d e r > <P r e c o m p i l e d H e a d e r C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> </P r e c o m p i l e d H e a d e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g e d i c a o d a d o s . cpp ” > <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g e s c o l h e r d i s t r i b u i c a o . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g e s c o l h e r R L S . cpp ” > <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> 98 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g i m p o r t a c a o d a d o s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g n o v a c o l u n a . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g r e m i d e o u t l i e r s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g r e m i d e q u a l i . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g r e m i d e q u a n t . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g r e n o m e a r . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g s u b s t q u a l . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g s u b s t q u a n t . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g v i s u a l i z a r g r a f i c o s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c g r a f i c o m u l t i b a r r a s . cpp ” > <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c h i s t o g r a m a q u a n t c o n t i n u o . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c t e l a i n i c i a l . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t a n a l i s e e x p l o r a c a o d a d o s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t c a t e g o r i a s q u a l . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t d i s t r i b u i c a o . cpp ” > <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t e s c o l h e r d p . cpp ”> 99 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t i n t e r v a l o s q u a n t . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t i n t e r v a l o q u a n t . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t p a r a m e t r o . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t p a r a m d i a g c a i x a . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t p a r a m z s c o r e . cpp ” > <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t r e g r e s s a o l i n e a r s i m p l e s . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t t a b e l a e d i t o r a . cpp ”> <E x c l u d e d F r o m B u i l d C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>t r u e </E x c l u d e d F r o m B u i l d> </ClCompile> <C l C o m p i l e I n c l u d e=” g r a f i c o m u l t i b a r r a s . cpp ” /> <C l C o m p i l e I n c l u d e=” g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . cpp ” /> <C l C o m p i l e I n c l u d e=” h i s t o g r a m a q u a n t c o n t i n u o . cpp ” /> <C l C o m p i l e I n c l u d e=” i t e m t a b e l a e d i t o r a . cpp ” /> <C l C o m p i l e I n c l u d e=” main . cpp ” /> <C l C o m p i l e I n c l u d e=” p o p u l a d o r . cpp ” /> <C l C o m p i l e I n c l u d e=” t e l a i n i c i a l . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g r e m i d e o u t l i e r s . cpp ” /> <C l C o m p i l e I n c l u d e=” t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g n o v a c o l u n a . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g e d i c a o d a d o s . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g r e m i d e q u a l i . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g r e m i d e q u a n t . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g r e n o m e a r . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g s u b s t q u a l . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g s u b s t q u a n t . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t a n a l i s e e x p l o r a c a o d a d o s . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g v i s u a l i z a r g r a f i c o s . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t c a t e g o r i a s q u a l . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t d i s t r i b u i c a o . cpp ” /> <C l C o m p i l e I n c l u d e=” d i a l o g e s c o l h e r d i s t r i b u i c a o . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t e s c o l h e r d p . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t i n t e r v a l o q u a n t . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t i n t e r v a l o s q u a n t . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t p a r a m e t r o . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t p a r a m d i a g c a i x a . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t p a r a m z s c o r e . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t r e g r e s s a o l i n e a r s i m p l e s . cpp ” /> <C l C o m p i l e I n c l u d e=” w i d g e t t a b e l a e d i t o r a . cpp ” /> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” t e l a i n i c i a l . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g t e l a i n i c i a l . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I 100 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g t e l a i n i c i a l . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” t e l a i n i c i a l . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <C l I n c l u d e I n c l u d e=” d i a g r a m a c a i x a . h ” /> <C l I n c l u d e I n c l u d e=” d i a g r a m a s c a t t e r . h ” /> <CustomBuild I n c l u d e=” w i d g e t t a b e l a e d i t o r a . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t t a b e l a e d i t o r a . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t t a b e l a e d i t o r a . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( 101 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g e s c o l h e r R L S . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g e s c o l h e r R L S . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − ”−I . \ G e n e r a t e d F i l e s ” ”−I DQT WIDGETS LIB −DQT PRINTSUPPORT LIB . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g e s c o l h e r R L S . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g e s c o l h e r R L S . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t t a b e l a e d i t o r a . h ” /> <C l I n c l u d e I n c l u d e=” r e s o u r c e . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g e d i c a o d a d o s . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g e s c o l h e r d i s t r i b u i c a o . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g i m p o r t a c a o d a d o s . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g n o v a c o l u n a . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g r e m i d e o u t l i e r s . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g r e m i d e q u a l i . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g r e m i d e q u a n t . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g r e n o m e a r . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g s u b s t q u a l . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g s u b s t q u a n t . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i d i a l o g v i s u a l i z a r g r a f i c o s . h ” /> <CustomBuild I n c l u d e=” w i d g e t r e g r e s s a o l i n e a r s i m p l e s . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t r e g r e s s a o l i n e a r s i m p l e s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> 102 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t r e g r e s s a o l i n e a r s i m p l e s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t p a r a m z s c o r e . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t p a r a m z s c o r e . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − ”−I . \ G e n e r a t e d F i l e s ” ”−I DQT WIDGETS LIB −DQT PRINTSUPPORT LIB . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t p a r a m z s c o r e . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t p a r a m d i a g c a i x a . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t p a r a m d i a g c a i x a . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t p a r a m d i a g c a i x a . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ 103 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e m i d e o u t l i e r s . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g r e m i d e o u t l i e r s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g r e m i d e o u t l i e r s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t e s c o l h e r d p . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t e s c o l h e r d p . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t e s c o l h e r d p . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − 104 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t p a r a m e t r o . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t p a r a m e t r o . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t p a r a m e t r o . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t d i s t r i b u i c a o . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t d i s t r i b u i c a o . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t d i s t r i b u i c a o . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ 105 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g e s c o l h e r d i s t r i b u i c a o . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g e s c o l h e r d i s t r i b u i c a o . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g e s c o l h e r d i s t r i b u i c a o . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − ”−I . \ DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t c a t e g o r i a s q u a l . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t c a t e g o r i a s q u a l . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t c a t e g o r i a s q u a l . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ 106 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t i n t e r v a l o s q u a n t . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t i n t e r v a l o s q u a n t . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t i n t e r v a l o s q u a n t . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t i n t e r v a l o q u a n t . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t i n t e r v a l o q u a n t . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t i n t e r v a l o q u a n t . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> 107 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g n o v a c o l u n a . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g n o v a c o l u n a . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g n o v a c o l u n a . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g i m p o r t a c a o d a d o s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − ”−I . \ G e n e r a t e d F i l e s ” ”−I DQT WIDGETS LIB −DQT PRINTSUPPORT LIB . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g i m p o r t a c a o d a d o s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g s u b s t q u a n t . h ”> 108 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g s u b s t q u a n t . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g s u b s t q u a n t . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − ”−I . \ DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g s u b s t q u a l . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g s u b s t q u a l . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − ”−I . \ G e n e r a t e d F i l e s ” ”−I DQT WIDGETS LIB −DQT PRINTSUPPORT LIB . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g s u b s t q u a l . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e n o m e a r . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( 109 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g r e n o m e a r . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − ”−I . \ G e n e r a t e d F i l e s ” ”−I DQT WIDGETS LIB −DQT PRINTSUPPORT LIB . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g r e n o m e a r . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e m i d e q u a n t . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g r e m i d e q u a n t . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g r e m i d e q u a n t . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e m i d e q u a l i . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > 110 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g r e m i d e q u a l i . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g r e m i d e q u a l i . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” g r a f i c o m u l t i b a r r a s . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g g r a f i c o m u l t i b a r r a s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ ( QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”− I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g g r a f i c o m u l t i b a r r a s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ”</ Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g v i s u a l i z a r g r a f i c o s . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g v i s u a l i z a r g r a f i c o s . h . . . < / Message> 111 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g v i s u a l i z a r g r a f i c o s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <C l I n c l u d e I n c l u d e=” e s c a l a n o m e s . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i t e l a i n i c i a l . h ” /> <CustomBuild I n c l u d e=” h i s t o g r a m a q u a n t c o n t i n u o . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g h i s t o g r a m a q u a n t c o n t i n u o . h . . . < / Message> 112 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g h i s t o g r a m a q u a n t c o n t i n u o . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ ( QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”− I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ”</ Command> </CustomBuild> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t a n a l i s e e x p l o r a c a o d a d o s . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t c a t e g o r i a s q u a l . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t d i s t r i b u i c a o . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t e s c o l h e r d p . h ” /> 113 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t i n t e r v a l o s q u a n t . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t i n t e r v a l o q u a n t . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t p a r a m e t r o . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t p a r a m d i a g c a i x a . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t p a r a m z s c o r e . h ” /> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t r e g r e s s a o l i n e a r s i m p l e s . h ” /> <C l I n c l u d e I n c l u d e=” i t e m t a b e l a e d i t o r a . h ” /> <C l I n c l u d e I n c l u d e=” p o p u l a d o r . h ” /> <CustomBuild I n c l u d e=” w i d g e t a n a l i s e e x p l o r a c a o d a d o s . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g w i d g e t a n a l i s e e x p l o r a c a o d a d o s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − ”−I . \ G e n e r a t e d F i l e s ” ”−I DQT WIDGETS LIB −DQT PRINTSUPPORT LIB . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g w i d g e t a n a l i s e e x p l o r a c a o d a d o s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g e d i c a o d a d o s . h ”> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; % ( A d d i t i o n a l I n p u t s )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Moc%27 i n g d i a l o g e d i c a o d a d o s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</Outputs > <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT CORE LIB −DQT GUI LIB − DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; $ (QTDIR) \ b i n \moc . e x e ; % ( F u l l P a t h ) ; % ( A d d i t i o n a l I n p u t s )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Moc%27 i n g d i a l o g e d i c a o d a d o s . h . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp</ Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \moc . e x e ” ”%( F u l l P a t h ) ” −o ” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ moc %( F i l e n a m e ) . cpp ” −DUNICODE −DWIN32 − DQT DLL −DTCC RODOLFO −DQT NO DEBUG −DNDEBUG −DQT CORE LIB − DQT GUI LIB −DQT WIDGETS LIB −DQT PRINTSUPPORT LIB ”−I . \ 114 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 G e n e r a t e d F i l e s ” ”−I . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) \ . ” ”−I . ” ”−I $ (QTDIR) \ i n c l u d e ” ”−I $ (QTDIR) \ i n c l u d e \ QtCore ” ”−I $ (QTDIR) \ i n c l u d e \QtGui ” ”−I $ (QTDIR) \ i n c l u d e \ QtWidgets ” ”−I $ (QTDIR) \ i n c l u d e \ Q t P r i n t S u p p o r t ” ”−I . \ . . \ l i b a n a l i s e t r a t a m e n t o ” ”−I . \ . . \ l i b u t i l i d a d e s ” ”−I . \ . . \ l i b q w t ” ”−I . \ . . \ l i b q c u s t o m p l o t ” ”−IC : \ Program F i l e s ( x86 ) \ V i s u a l Leak D e t e c t o r \ i n c l u d e ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” t e l a i n i c i a l . q r c ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>%(F u l l P a t h ) ; % ( A d d i t i o n a l I n p u t s )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> Rcc%27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ q r c %( F i l e n a m e ) . cpp ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ r c c . e x e ” −name ”%( F i l e n a m e ) ” −no−c o m p r e s s ”%( F u l l P a t h ) ” −o . \ G e n e r a t e d F i l e s \ q r c %( F i l e n a m e ) . cpp</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>%(F u l l P a t h ) ; % ( A d d i t i o n a l I n p u t s )</ A d d i t i o n a l I n p u t s > <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> Rcc%27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ q r c %( F i l e n a m e ) . cpp ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ r c c . e x e ” −name ”%( F i l e n a m e ) ” −no−c o m p r e s s ”%( F u l l P a t h ) ” −o . \ G e n e r a t e d F i l e s \ q r c %( F i l e n a m e ) . cpp</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g e d i c a o d a d o s . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t a n a l i s e e x p l o r a c a o d a d o s . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> 115 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 <CustomBuild I n c l u d e=” d i a l o g v i s u a l i z a r g r a f i c o s . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g r e m i d e q u a l i . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g r e m i d e q u a n t . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g r e n o m e a r . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> 116 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g s u b s t q u a l . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g s u b s t q u a n t . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ 117 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g n o v a c o l u n a . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t i n t e r v a l o q u a n t . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t i n t e r v a l o s q u a n t . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” 118 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t c a t e g o r i a s q u a l . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g e s c o l h e r d i s t r i b u i c a o . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t d i s t r i b u i c a o . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t p a r a m e t r o . u i ”> <F i l e T y p e >Document</F i l e T y p e > 119 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t e s c o l h e r d p . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g r e m i d e o u t l i e r s . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t p a r a m d i a g c a i x a . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> 120 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t p a r a m z s c o r e . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t r e g r e s s a o l i n e a r s i m p l e s . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <R e s o u r c e C o m p i l e I n c l u d e=” g u i a n a l i s e t r a t a m e n t o . r c ” /> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” d i a l o g e s c o l h e r R L S . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> 121 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” w i d g e t t a b e l a e d i t o r a . u i ”> <F i l e T y p e >Document</F i l e T y p e > <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ”%( F u l l P a t h ) ”</Command> <A d d i t i o n a l I n p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ (QTDIR) \ b i n \ u i c . e x e ; % ( A d d i t i o n a l I n p u t s )</ AdditionalInputs> <M e s s a g e C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> U i c %27 i n g %( I d e n t i t y ) . . . < / Message> <O u t p u t s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” >.\ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ; % ( O u t p u t s )</Outputs> <Command C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> ” $ (QTDIR) \ b i n \ u i c . e x e ” −o ” . \ G e n e r a t e d F i l e s \ u i %( F i l e n a m e ) . h ” ” %( F u l l P a t h ) ”</Command> </CustomBuild> </ItemGroup> <I m p o r t P r o j e c t=” $ ( VCTargetsPath ) \ M i c r o s o f t . Cpp . t a r g e t s ” /> <ImportGroup L a b e l=” E x t e n s i o n T a r g e t s ”> </ImportGroup> <P r o j e c t E x t e n s i o n s > <V i s u a l S t u d i o > <U s e r P r o p e r t i e s U i c D i r=” . \ G e n e r a t e d F i l e s ” MocDir=” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) ” MocOptions=” ” R c c D i r=” . \ G e n e r a t e d F i l e s ” l u p d a t e O n B u i l d=” 0 ” l u p d a t e O p t i o n s=” ” l r e l e a s e O p t i o n s=” ” Q t 5 V e r s i o n x 0 0 2 0 W i n 3 2=” m s v c 2 0 1 0 o p e n g l ” /> </ V i s u a l S t u d i o > </ P r o j e c t E x t e n s i o n s > </ P r o j e c t > Listagem B.2: AnaliseTratamento.vcxproj 1 ı̈¿<?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=” u t f −8”?> 2 <P r o j e c t T o o l s V e r s i o n=” 4 . 0 ” xmlns=” h t t p : / / s c h e m a s . m i c r o s o f t . com/ d e v e l o p e r / m s b u i l d / 2 0 0 3 ”> 3 <ItemGroup> 4 < F i l t e r I n c l u d e=” S o u r c e F i l e s ”> 5 <U n i q u e I d e n t i f i e r >{4FC737F1−C7A5−4376−A066−2A32D752A2FF}</ UniqueIdentifier> 6 <E x t e n s i o n s >cpp ; c x x ; c ; d e f </ E x t e n s i o n s > 7 </ F i l t e r > 8 < F i l t e r I n c l u d e=” H e a d e r F i l e s ”> 9 <U n i q u e I d e n t i f i e r >{93995380 −89BD−4b04 −88EB−625FBE52EBFB}</ UniqueIdentifier> 10 <E x t e n s i o n s >h</ E x t e n s i o n s > 11 </ F i l t e r > 12 < F i l t e r I n c l u d e=”Form F i l e s ”> 13 <U n i q u e I d e n t i f i e r >{99349809 −55BA−4b9d−BF79−8FDBB0286EB3}</ UniqueIdentifier> 14 <E x t e n s i o n s >u i </ E x t e n s i o n s > 15 </ F i l t e r > 16 < F i l t e r I n c l u d e=” G e n e r a t e d F i l e s ”> 17 <U n i q u e I d e n t i f i e r >{71ED8ED8−ACB9−4CE9−BBE1−E00B30144E11}</ UniqueIdentifier> 18 <E x t e n s i o n s >moc ; h ; cpp</ E x t e n s i o n s > 19 <S o u r c e C o n t r o l F i l e s >F a l s e </ S o u r c e C o n t r o l F i l e s > 20 </ F i l t e r > 21 < F i l t e r I n c l u d e=” G e n e r a t e d F i l e s \Debug ”> 22 <U n i q u e I d e n t i f i e r >{596 d f b c 0−c c 9 f −420e −89d2−6e c 9 1 4 5 6 a 4 2 2 }</ UniqueIdentifier> 122 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 <E x t e n s i o n s >cpp ; moc</ E x t e n s i o n s > <S o u r c e C o n t r o l F i l e s >F a l s e </ S o u r c e C o n t r o l F i l e s > </ F i l t e r > < F i l t e r I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e ”> <U n i q u e I d e n t i f i e r >{47 a 8 f 2 c 6−f 4 2 9 −4d 8 f −8383−81 c 9 5 3 b b 1 7 1 3 }</ UniqueIdentifier> <E x t e n s i o n s >cpp ; moc</ E x t e n s i o n s > <S o u r c e C o n t r o l F i l e s >F a l s e </ S o u r c e C o n t r o l F i l e s > </ F i l t e r > < F i l t e r I n c l u d e=” H e a d e r F i l e s \Forms ”> <U n i q u e I d e n t i f i e r >{b 1 8 a 8 2 6 6−e e 9 7 −418 f−b5e9−d 9 e 1 a b a 6 a 4 0 5 }</ UniqueIdentifier> </ F i l t e r > < F i l t e r I n c l u d e=” S o u r c e F i l e s \Forms ”> <U n i q u e I d e n t i f i e r >{4 e e e b d 3 2 −8518−4b62−a29a −4f e 4 b 3 2 3 a f 5 4 }</ UniqueIdentifier> </ F i l t e r > < F i l t e r I n c l u d e=” H e a d e r F i l e s \ t h r e a d ”> <U n i q u e I d e n t i f i e r >{1 d f d e 2 3 e −18c9 −4958−be62 −688684543 b 8 c}</ UniqueIdentifier> </ F i l t e r > < F i l t e r I n c l u d e=” S o u r c e F i l e s \ t h r e a d ”> <U n i q u e I d e n t i f i e r >{b 4 4 5 3 f f 1 −9005−435c−9c22−c 4 9 2 5 5 f f 7 d 5 0 }</ UniqueIdentifier> </ F i l t e r > < F i l t e r I n c l u d e=” H e a d e r F i l e s \ G r a f i c o s ”> <U n i q u e I d e n t i f i e r >{6693 c a 3 5 −09 f 2 −45 f a −8ab6 −1140928742 b3}</ UniqueIdentifier> </ F i l t e r > < F i l t e r I n c l u d e=” S o u r c e F i l e s \ G r a f i c o s ”> <U n i q u e I d e n t i f i e r >{273 b 1 b 3 f−c76b −4c2d −80d9 −615 c 3 6 5 3 4 0 8 4 }</ UniqueIdentifier> </ F i l t e r > < F i l t e r I n c l u d e=” H e a d e r F i l e s \Forms\ R e s o u r c e F i l e s ”> <U n i q u e I d e n t i f i e r >{D9D6E242−F8AF−46E4−B9FD−80ECBC20BA3E}</ UniqueIdentifier> <E x t e n s i o n s >q r c ;∗ </ E x t e n s i o n s > <P a r s e F i l e s >f a l s e </ P a r s e F i l e s > </ F i l t e r > </ItemGroup> <ItemGroup> <C l C o m p i l e I n c l u d e=” main . cpp ”> < F i l t e r >S o u r c e F i l e s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c t e l a i n i c i a l . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c t e l a i n i c i a l . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ q r c t e l a i n i c i a l . cpp ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” t e l a i n i c i a l . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” p o p u l a d o r . cpp ”> < F i l t e r >S o u r c e F i l e s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” i t e m t a b e l a e d i t o r a . cpp ”> < F i l t e r >S o u r c e F i l e s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . cpp ”> < F i l t e r >S o u r c e F i l e s \ t h r e a d </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a g r a m a s c a t t e r . cpp ”> < F i l t e r >S o u r c e F i l e s \ G r a f i c o s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a g r a m a c a i x a . cpp ”> < F i l t e r >S o u r c e F i l e s \ G r a f i c o s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t i n t e r v a l o q u a n t . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> 123 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 <C l C o m p i l e I n c l u d e=” w i d g e t i n t e r v a l o s q u a n t . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t c a t e g o r i a s q u a l . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t i n t e r v a l o s q u a n t . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t i n t e r v a l o s q u a n t . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t i n t e r v a l o q u a n t . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t i n t e r v a l o q u a n t . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t c a t e g o r i a s q u a l . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t c a t e g o r i a s q u a l . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t d i s t r i b u i c a o . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t d i s t r i b u i c a o . cpp ” > < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t p a r a m e t r o . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t p a r a m e t r o . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t p a r a m e t r o . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t d i s t r i b u i c a o . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t e s c o l h e r d p . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t e s c o l h e r d p . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t e s c o l h e r d p . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t p a r a m d i a g c a i x a . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t p a r a m d i a g c a i x a . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t p a r a m d i a g c a i x a . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t p a r a m z s c o r e . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t p a r a m z s c o r e . cpp ” > < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t p a r a m z s c o r e . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g e d i c a o d a d o s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> 124 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g e d i c a o d a d o s . cpp ” > < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g e d i c a o d a d o s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g r e m i d e q u a l i . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g r e m i d e q u a l i . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g r e m i d e q u a l i . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g r e m i d e q u a n t . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g r e m i d e q u a n t . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g r e m i d e q u a n t . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g r e n o m e a r . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g r e n o m e a r . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g r e n o m e a r . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g s u b s t q u a l . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g s u b s t q u a l . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g s u b s t q u a l . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g s u b s t q u a n t . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g s u b s t q u a n t . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g s u b s t q u a n t . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g n o v a c o l u n a . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g n o v a c o l u n a . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g n o v a c o l u n a . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g i m p o r t a c a o d a d o s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g i m p o r t a c a o d a d o s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g v i s u a l i z a r g r a f i c o s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g v i s u a l i z a r g r a f i c o s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> 125 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 <C l C o m p i l e I n c l u d e=” d i a l o g v i s u a l i z a r g r a f i c o s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g e s c o l h e r d i s t r i b u i c a o . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g e s c o l h e r d i s t r i b u i c a o . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g e s c o l h e r d i s t r i b u i c a o . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g r e m i d e o u t l i e r s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g r e m i d e o u t l i e r s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g r e m i d e o u t l i e r s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t a n a l i s e e x p l o r a c a o d a d o s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t a n a l i s e e x p l o r a c a o d a d o s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t a n a l i s e e x p l o r a c a o d a d o s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” h i s t o g r a m a q u a n t c o n t i n u o . cpp ”> < F i l t e r >S o u r c e F i l e s \ G r a f i c o s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c h i s t o g r a m a q u a n t c o n t i n u o . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c h i s t o g r a m a q u a n t c o n t i n u o . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t r e g r e s s a o l i n e a r s i m p l e s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t r e g r e s s a o l i n e a r s i m p l e s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t r e g r e s s a o l i n e a r s i m p l e s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c d i a l o g e s c o l h e r R L S . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c d i a l o g e s c o l h e r R L S . cpp ” > < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g e s c o l h e r R L S . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c w i d g e t t a b e l a e d i t o r a . cpp ” > < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c w i d g e t t a b e l a e d i t o r a . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” w i d g e t t a b e l a e d i t o r a . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 0 a r q u i v o . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> 126 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 1 s e l e c i o n a r a t r i b s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 2 t i p i f i c a r . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 3 d e f i n t e r v c a t . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 4 t r a t a r f o r a i n t e r v c a t . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 5 t e c o u t l i e r s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 6 t r a t a r o u t l i e r s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s p g 0 7 t r a t a r m i s s i n g s i n v a l i d o s . cpp ”> < F i l t e r >S o u r c e F i l e s \Forms</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c g r a f i c o m u l t i b a r r a s . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c g r a f i c o m u l t i b a r r a s . cpp ” > < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” g r a f i c o m u l t i b a r r a s . cpp ”> < F i l t e r >S o u r c e F i l e s \ G r a f i c o s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \Debug\ m o c g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \Debug</ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” G e n e r a t e d F i l e s \ R e l e a s e \ m o c g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . cpp ”> < F i l t e r >G e n e r a t e d F i l e s \ R e l e a s e </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . cpp ”> < F i l t e r >S o u r c e F i l e s \ G r a f i c o s </ F i l t e r > </ClCompile> </ItemGroup> <ItemGroup> <CustomBuild I n c l u d e=” t e l a i n i c i a l . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” t e l a i n i c i a l . q r c ”> < F i l t e r >H e a d e r F i l e s \Forms\ R e s o u r c e F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” t e l a i n i c i a l . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . h ”> < F i l t e r >H e a d e r F i l e s \ t h r e a d </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t i n t e r v a l o q u a n t . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t i n t e r v a l o s q u a n t . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t c a t e g o r i a s q u a l . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t i n t e r v a l o s q u a n t . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t i n t e r v a l o q u a n t . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t c a t e g o r i a s q u a l . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t d i s t r i b u i c a o . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t p a r a m e t r o . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > 127 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t p a r a m e t r o . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t d i s t r i b u i c a o . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t e s c o l h e r d p . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t e s c o l h e r d p . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t p a r a m d i a g c a i x a . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t p a r a m d i a g c a i x a . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t p a r a m z s c o r e . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t p a r a m z s c o r e . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g e d i c a o d a d o s . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g e d i c a o d a d o s . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e m i d e q u a l i . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e m i d e q u a l i . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e m i d e q u a n t . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e m i d e q u a n t . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e n o m e a r . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e n o m e a r . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g s u b s t q u a l . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g s u b s t q u a l . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g s u b s t q u a n t . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g s u b s t q u a n t . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g n o v a c o l u n a . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g n o v a c o l u n a . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g i m p o r t a c a o d a d o s . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g v i s u a l i z a r g r a f i c o s . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g v i s u a l i z a r g r a f i c o s . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g e s c o l h e r d i s t r i b u i c a o . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> 128 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 <CustomBuild I n c l u d e=” d i a l o g e s c o l h e r d i s t r i b u i c a o . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e m i d e o u t l i e r s . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g r e m i d e o u t l i e r s . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t a n a l i s e e x p l o r a c a o d a d o s . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t a n a l i s e e x p l o r a c a o d a d o s . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” h i s t o g r a m a q u a n t c o n t i n u o . h ”> < F i l t e r >H e a d e r F i l e s \ G r a f i c o s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t r e g r e s s a o l i n e a r s i m p l e s . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t r e g r e s s a o l i n e a r s i m p l e s . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g e s c o l h e r R L S . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” d i a l o g e s c o l h e r R L S . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t t a b e l a e d i t o r a . u i ”> < F i l t e r >Form F i l e s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” w i d g e t t a b e l a e d i t o r a . h ”> < F i l t e r >H e a d e r F i l e s \Forms</ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” g r a f i c o m u l t i b a r r a s . h ”> < F i l t e r >H e a d e r F i l e s \ G r a f i c o s </ F i l t e r > </CustomBuild> <CustomBuild I n c l u d e=” g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . h ”> < F i l t e r >H e a d e r F i l e s \ G r a f i c o s </ F i l t e r > </CustomBuild> </ItemGroup> <ItemGroup> <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i t e l a i n i c i a l . h ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” i t e m t a b e l a e d i t o r a . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” e s c a l a n o m e s . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” d i a g r a m a s c a t t e r . h ”> < F i l t e r >H e a d e r F i l e s \ G r a f i c o s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” d i a g r a m a c a i x a . h ”> < F i l t e r >H e a d e r F i l e s \ G r a f i c o s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t i n t e r v a l o q u a n t . h ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t i n t e r v a l o s q u a n t . h ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t c a t e g o r i a s q u a l . h ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t d i s t r i b u i c a o . h ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t p a r a m e t r o . h ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t e s c o l h e r d p . h ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t p a r a m d i a g c a i x a . h ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i w i d g e t p a r a m z s c o r e . h ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > 129 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” p o p u l a d o r . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i ”> < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” r e s o u r c e . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” G e n e r a t e d F i l e s \ u i < F i l t e r >G e n e r a t e d F i l e s </ F i l t e r > </ C l I n c l u d e > </ItemGroup> <ItemGroup> <R e s o u r c e C o m p i l e I n c l u d e=” g u i a n a l i s e </ItemGroup> </ P r o j e c t > d i a l o g e d i c a o d a d o s . h ”> d i a l o g r e m i d e q u a l i . h ”> d i a l o g r e m i d e q u a n t . h ”> d i a l o g r e n o m e a r . h ”> d i a l o g s u b s t q u a l . h ”> d i a l o g s u b s t q u a n t . h ”> d i a l o g n o v a c o l u n a . h ”> d i a l o g i m p o r t a c a o d a d o s . h ”> d i a l o g v i s u a l i z a r g r a f i c o s . h ”> d i a l o g e s c o l h e r d i s t r i b u i c a o . h ”> d i a l o g r e m i d e o u t l i e r s . h ”> widget analise exploracao dados .h widget regressao linear simples .h d i a l o g e s c o l h e r R L S . h ”> w i d g e t t a b e l a e d i t o r a . h ”> t r a t a m e n t o . r c ” /> Listagem B.3: AnaliseTratamento.vcxproj.filters 1 // M i c r o s o f t V i s u a l C++ g e n e r a t e d r e s o u r c e s c r i p t . 2 // 3 #i n c l u d e ” r e s o u r c e . h ” 4 5 #d e f i n e APSTUDIO READONLY SYMBOLS 6 // /////////////////////////////////////////////////////////////////////////// 7 // 8 // G e n e r a t e d f r o m t h e TEXTINCLUDE 2 r e s o u r c e . 9 // 10 #i n c l u d e ” a f x r e s . h ” 11 12 // /////////////////////////////////////////////////////////////////////////// 13 #u n d e f APSTUDIO READONLY SYMBOLS 130 14 15 // /////////////////////////////////////////////////////////////////////////// 16 // P o r t u g u e s e ( B r a z i l ) r e s o u r c e s 17 18 # i f ! d e f i n e d (AFX RESOURCE DLL) | | d e f i n e d (AFX TARG PTB) 19 LANGUAGE LANG PORTUGUESE, SUBLANG PORTUGUESE BRAZILIAN 20 21 # i f d e f APSTUDIO INVOKED 22 // /////////////////////////////////////////////////////////////////////////// 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN ” r e s o u r c e . h \0 ” END 2 TEXTINCLUDE BEGIN ”#i n c l u d e ” ” a f x r e s . h ” ” \ r \n ” ” \0 ” END 3 TEXTINCLUDE BEGIN ” \ r \n ” ” \0 ” END #e n d i f // APSTUDIO INVOKED #e n d i f // P o r t u g u e s e ( B r a z i l ) r e s o u r c e s // /////////////////////////////////////////////////////////////////////////// 48 49 50 51 #i f n d e f APSTUDIO INVOKED 52 // /////////////////////////////////////////////////////////////////////////// 53 54 55 56 57 58 // // // Generated from t h e TEXTINCLUDE 3 resource . // /////////////////////////////////////////////////////////////////////////// 59 #e n d i f // n o t APSTUDIO INVOKED Listagem B.4: gui analise tratamento.rc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // {{NO DEPENDENCIES}} // M i c r o s o f t V i s u a l C++ g e n e r a t e d i n c l u d e // Used by g u i a n a l i s e t r a t a m e n t o . r c // // Next d e f a u l t v a l u e s f o r new o b j e c t s // # i f d e f APSTUDIO INVOKED #i f n d e f APSTUDIO READONLY SYMBOLS #d e f i n e APS NEXT RESOURCE VALUE #d e f i n e APS NEXT COMMAND VALUE #d e f i n e APS NEXT CONTROL VALUE #d e f i n e APS NEXT SYMED VALUE #e n d i f #e n d i f file . 103 40001 1001 101 Listagem B.5: resource.h 131 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 #i n c l u d e ”tela i n i c i a l . h” #i n c l u d e <QtWidgets / Q A p p l i c a t i o n > #i n c l u d e <f s t r e a m > //#i n c l u d e <v l d . h> /∗#d e f i n e CRTDBG MAP ALLOC #i n c l u d e <i o s t r e a m > #i n c l u d e <c r t d b g . h> #d e f i n e DEBUG NEW new ( NORMAL BLOCK, #d e f i n e new DEBUG NEW∗/ void FILE c r a s h M e s s a g e O u t p u t ( QtMsgType t y p e , Q S t r i n g &s t r ) const , LINE QMessageLogContext & , const { std : : ofstream out ; // i n t h i s f u n c t i o n , you c a n w r i t e t h e m e s s a g e t o any s t r e a m ! switch ( type ) { c a s e QtDebugMsg : try { o u t . open ( ” g u i a n a l i s e t r a t a m e n t o . l o g ” , s t d : : i o s : : app ) ; i f ( out . i s o p e n ( ) ) { o u t << ” Debug : ” << s t r . t o S t d S t r i n g ( ) << ” \n ” ; out . c l o s e ( ) ; } } c a t c h ( s t d : : i f s t r e a m : : f a i l u r e e ) {} break ; QtWarningMsg : break ; case QtCriticalMsg : break ; c a s e QtFatalMsg : break ; } case } int { main ( i n t argc , char ∗ argv [ ] ) remove ( ” g u i a n a l i s e t r a t a m e n t o . l o g ” ) ; q I n s t a l l M e s s a g e H a n d l e r ( crashMessageOutput ) ; QLocale : : s e t D e f a u l t ( QLocale ( QLocale : : Portuguese , QApplication a ( argc , argv ) ; TelaInicial w = TelaInicial () ; w . show ( ) ; i n t r e s u l t = a . exec () ; // CrtDumpMemoryLeaks ( ) ; return result ; } Listagem B.6: main.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ) #i f n d e f ESCALANOME H #d e f i n e ESCALANOME H #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <q w t s c a l e d r a w . h> <v e c t o r > <s t r i n g > <s t r i n g > #i n c l u d e ” u t i l i d a d e s . h” using namespace std ; c l a s s EscalaNomes : { private : v e c t o r <s t r i n g > public : EscalaNomes ( ) : public QwtScaleDraw atributos ; QwtScaleDraw ( ) QLocale : : B r a z i l ) ) ; 132 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 { } E s c a l a N o m e s ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s ) { t h i s −> a t r i b u t o s = a t r i b u t o s ; } void { setAtributos ( const : QwtScaleDraw ( ) v e c t o r <s t r i n g > &a t r i b u t o s ) t h i s −> a t r i b u t o s = a t r i b u t o s ; } v i r t u a l ˜ E s c a l a N o m e s ( ) {} v i r t u a l QwtText l a b e l ( d o u b l e b ) c o n s t { i f ( a t r i b u t o s . empty ( ) ) { return QwtText ( U t i l i d a d e s : : d b l T o S t d S t r ( b , } else { int valueInt = b ; if { ( v a l u e I n t >= return atributos . size () || 10) . c s t r ( ) ) ; valueInt < 0) QwtText ( ” ” ) ; } r e t u r n QwtText ( Q S t r i n g : : f r o m L a t i n 1 ( )); 49 50 } 51 } ; 52 53 #e n d i f atributos [ valueInt ] . c str () } Listagem B.7: escala nomes.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #i n c l u d e ” g r a f i c o m u l t i b a r r a s . h” #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <q w t <q w t <q w t <q w t <q w t <q w t <q w t <q w t <q w t <q w t #i n c l u d e ” u t i l i d a d e s . h” p l o t r e n d e r e r . h> p l o t c a n v a s . h> p l o t m u l t i b a r c h a r t . h> c o l u m n s y m b o l . h> p l o t l a y o u t . h> l e g e n d . h> s c a l e d r a w . h> p l o t g r i d . h> p l o t m a g n i f i e r . h> p l o t p a n n e r . h> G r a f i c o M u l t i B a r r a s : : G r a f i c o M u l t i B a r r a s ( QWidget ∗ p a r e n t ) : QwtPlot ( p a r e n t ) { setAutoFillBackground ( true ) ; QPalette p = p a l e t t e ( ) ; p . s e t C o l o r ( Q P a l e t t e : : Window , Qt : : t r a n s p a r e n t ) ; setPalette (p) ; setAutoReplot ( f a l s e ) ; c a n v a s ( )−>s e t P a l e t t e ( Qt : : w h i t e ) ; d b a r C h a r t I t e m = new Q w t P l o t M u l t i B a r C h a r t ( ) ; d b a r C h a r t I t e m−>s e t L a y o u t P o l i c y ( Q w t P l o t M u l t i B a r C h a r t : : A u t o A d j u s t S a m p l e s ); d b a r C h a r t I t e m−>s e t S p a c i n g ( 2 0 ) ; d b a r C h a r t I t e m−>s e t M a r g i n ( 3 ) ; d b a r C h a r t I t e m−>a t t a c h ( t h i s ) ; setEstiloPilha () ; i n s e r t L e g e n d ( new QwtLegend ( ) ) ; t i t u l o L e g e n d a = new Q w t P l o t T e x t L a b e l ( ) ; t i t u l o L e g e n d a −>a t t a c h ( t h i s ) ; 133 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 Q w t P l o t G r i d ∗ g r i d = new Q w t P l o t G r i d ( ) ; g r i d −>a t t a c h ( t h i s ) ; g r i d −>s e t P e n ( QPen ( QColor ( 2 0 0 , 2 0 0 , 2 0 0 ) ) ) ; // p a n n i n g w i t h t h e l e f t mouse b u t t o n ( v o i d ) new QwtPlotPanner ( c a n v a s ( ) ) ; // zoom i n / o u t w i t h t h e w h e e l Q w t P l o t M a g n i f i e r ∗ m a g n i f i e r = new Q w t P l o t M a g n i f i e r ( c a n v a s ( ) ) ; m a g n i f i e r −>s e t M o u s e B u t t o n ( Qt : : NoButton ) ; m a g n i f i e r −>s e t W h e e l F a c t o r ( − 1 . 1 ) ; } GraficoMultiBarras : : ˜ GraficoMultiBarras () { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; delete void GraficoMultiBarras : : populate ( const c o n s t v e c t o r <s t r i n g > & t i t u l o s ) 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 v e c t o r <v e c t o r <i n t >> &f r e q u e n c i a s , { const const size t size t numSamples = f r e q u e n c i a s . s i z e ( ) ; numBars = f r e q u e n c i a s [ 0 ] . s i z e ( ) ; Q L i s t<QwtText> t i t l e s f o r ( v e c t o r <s t r i n g > : : c i t T i t u l o != c i t T i t u l o ++) { t i t l e s += Q S t r i n g } = Q L i s t<QwtText >() ; c o n s t i t e r a t o r c i t T i t u l o = t i t u l o s . cbegin () ; t i t u l o s . cend ( ) ; : : f r o m L a t i n 1 ( c i t T i t u l o −>c s t r ( ) ) ; d b a r C h a r t I t e m−>s e t B a r T i t l e s ( t i t l e s ) ; d b a r C h a r t I t e m−>s e t L e g e n d I c o n S i z e ( Q S i z e ( 1 0 , for { ( int i = 0; i < numBars ; 14) ) ; i ++) QwtColumnSymbol ∗ s y m b o l = new QwtColumnSymbol ( QwtColumnSymbol : : Box ) ; symbol−>s e t L i n e W i d t h ( 2 ) ; symbol−>s e t F r a m e S t y l e ( QwtColumnSymbol : : R a i s e d ) ; symbol−>s e t P a l e t t e ( Q P a l e t t e ( QColor ( U t i l i d a d e s : : c o r e s D i s t i n t a s [ i % 56]. c str () ) ) ) ; d b a r C h a r t I t e m−>s e t S y m b o l ( i , s y m b o l ) ; 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 tituloLegenda ; } } QVector< QVector<d o u b l e > > s e r i e s ; f o r ( i n t i = 0 ; i < numSamples ; i ++) { QVector<d o u b l e > v a l u e s ; f o r ( i n t j = 0 ; j < numBars ; j ++) { v a l u e s += ( d o u b l e ) f r e q u e n c i a s [ i ] [ j ] ; } s e r i e s += v a l u e s ; } d b a r C h a r t I t e m−>s e t S a m p l e s ( s e r i e s ) ; } void GraficoMultiBarras : : ajustarLabelEixo ( int alinhamento , i n t ro ta ca o ) axisId , Qt : : A l i g n m e n t { setAxisLabelAlignment ( axisId , alinhamento ) ; setAxisLabelRotation ( axisId , rotacao ) ; } void { GraficoMultiBarras : : setTituloLegenda ( QString if { titulo ) ( tituloLegenda ) QwtText t i t l e ( t i t u l o ) ; t i t l e . s e t R e n d e r F l a g s ( Qt : : A l i g n R i g h t | Qt : : A l i g n T o p t i t l e . s e t F o n t ( a x i s T i t l e ( QwtPlot : : xBottom ) . f o n t ( ) ) ; t i t u l o L e g e n d a −>s e t T e x t ( t i t l e ) ; } } ); 134 118 119 120 121 122 123 124 125 126 void { GraficoMultiBarras : : setEstiloBarras () d b a r C h a r t I t e m−>s e t S t y l e ( Q w t P l o t M u l t i B a r C h a r t : : Grouped ) ; } void { GraficoMultiBarras : : setEstiloPilha () d b a r C h a r t I t e m−>s e t S t y l e ( Q w t P l o t M u l t i B a r C h a r t : : S t a c k e d ) ; } Listagem B.8: grafico multibarras.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #i f n d e f GRAFICO MULTI BARRAS #d e f i n e GRAFICO MULTI BARRAS #i n c l u d e <q w t p l o t . h> #i n c l u d e < q w t p l o t t e x t l a b e l . h> #i n c l u d e <v e c t o r > using namespace std ; c l a s s QwtPlotMultiBarChart ; c l a s s GraficoMultiBarras : public { Q OBJECT QwtPlot public : G r a f i c o M u l t i B a r r a s ( QWidget ∗ p a r e n t = NULL) ; ˜ GraficoMultiBarras () ; v o i d p o p u l a t e ( c o n s t v e c t o r <v e c t o r <i n t >> &f r e q u e n c i a s , c o n s t v e c t o r < s t r i n g > &t i t u l o s ) ; v o i d a j u s t a r L a b e l E i x o ( i n t a x i s I d , Qt : : A l i g n m e n t a l i n h a m e n t o , i n t rotacao ) ; void setTituloLegenda ( QString t i t u l o ) ; void s e t E s t i l o B a r r a s () ; void s e t E s t i l o P i l h a () ; 20 21 22 23 24 p r i v a t e : 25 QwtPlotMultiBarChart ∗ d barChartItem ; 26 QwtPlotTextLabel ∗ t i t u l o L e g e n d a ; 27 } ; 28 29 #e n d i f Listagem B.9: grafico multibarras.h 1 #i n c l u d e ” g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . h ” 2 3 #i n c l u d e < q w t p l o t g r i d . h> 4 5 GraficoBarrasQualQuantDiscreto : : GraficoBarrasQualQuantDiscreto ( 6 c o n s t v e c t o r <s t r i n g > &c a t e g o r i a s , 7 c o n s t v e c t o r <i n t > &f r e q u e n c i a s , 8 c o n s t i n t count , 9 QWidget ∗ p a r e n t ) : 10 QwtPlot ( p a r e n t ) 11 { 12 setAutoReplot ( f a l s e ) ; 13 14 setUpdatesEnabled ( f a l s e ) ; 15 setAxisAutoScale ( f a l s e ) ; 16 17 setAutoFillBackground ( true ) ; 18 19 d b a r C h a r t I t e m = new QwtPlotBarChart ( ) ; 20 d b a r C h a r t I t e m−>s e t L a y o u t P o l i c y ( QwtPlotBarChart : : A u t o A d j u s t S a m p l e s ) ; 21 d b a r C h a r t I t e m−>s e t S p a c i n g ( 3 ) ; 22 d b a r C h a r t I t e m−>s e t M a r g i n ( 3 ) ; 23 24 c o n s t s i z e t max = c a t e g o r i a s . s i z e ( ) ; 25 s e t A x i s S c a l e ( QwtPlot : : xBottom , −1, max , 1 ) ; 26 updateAxes ( ) ; 27 28 s e t A x i s S c a l e D r a w ( QwtPlot : : xBottom , new E s c a l a N o m e s ( c a t e g o r i a s ) ) ; 29 updateAxes ( ) ; 30 135 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 QFont f o n t ; font . setPointSize (8) ; s e t A x i s F o n t ( QwtPlot : : xBottom , f o n t ) ; s e t A x i s L a b e l A l i g n m e n t ( QwtPlot : : xBottom , Qt : : A l i g n R i g h t ) ; s e t A x i s L a b e l R o t a t i o n ( QwtPlot : : xBottom , 4 5 ) ; updateAxes ( ) ; d b a r C h a r t I t e m−>a t t a c h ( t h i s ) ; i n s e r t L e g e n d ( new QwtLegend ( ) ) ; populate ( frequencias , count ) ; setUpdatesEnabled ( true ) ; setAxisAutoScale ( true ) ; Q w t P l o t G r i d ∗ g r i d = new Q w t P l o t G r i d ( ) ; g r i d −>a t t a c h ( t h i s ) ; g r i d −>s e t P e n ( QPen ( QColor ( 2 0 0 , 2 0 0 , 2 0 0 ) ) ) ; replot () ; } void GraficoBarrasQualQuantDiscreto : : populate ( c o n s t v e c t o r <i n t > &f r e q u e n c i a s , const i n t count ) { QwtColumnSymbol ∗ s y m b o l = new QwtColumnSymbol ( QwtColumnSymbol : : Box ) ; symbol−>s e t L i n e W i d t h ( 1 ) ; symbol−>s e t F r a m e S t y l e ( QwtColumnSymbol : : R a i s e d ) ; symbol−>s e t P a l e t t e ( Q P a l e t t e ( Qt : : b l u e ) ) ; d b a r C h a r t I t e m−>s e t S y m b o l ( s y m b o l ) ; QVector<d o u b l e > s e r i e s ; f o r ( i n t i = 0 ; i < c o u n t ; i ++) { s e r i e s += f r e q u e n c i a s [ i ] ; } d b a r C h a r t I t e m−>s e t S a m p l e s ( s e r i e s ) ; } Listagem B.10: grafico barras qual quant discreto.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #i f n d e f GRAFICO BARRAS QUAL QUANT DISCRETO #d e f i n e GRAFICO BARRAS QUAL QUANT DISCRETO #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <q w t p l o t . h> <q w t p l o t r e n d e r e r . h> <q w t p l o t c a n v a s . h> <q w t p l o t b a r c h a r t . h> <q w t c o l u m n s y m b o l . h> <q w t p l o t l a y o u t . h> <q w t l e g e n d . h> ” e s c a l a n o m e s . h” #i n c l u d e <q d a t e t i m e . h> using namespace std ; c l a s s QwtPlotBarChart ; c l a s s GraficoBarrasQualQuantDiscreto : { Q OBJECT public public : GraficoBarrasQualQuantDiscreto ( c o n s t v e c t o r <s t r i n g > &c a t e g o r i a s , c o n s t v e c t o r <i n t > &f r e q u e n c i a s , c o n s t i n t count , QWidget ∗ p a r e n t = NULL) ; private : void populate ( c o n s t v e c t o r <i n t > &f r e q u e n c i a s , const i n t count ) ; QwtPlot 136 33 QwtPlotBarChart ∗ d b a r C h a r t I t e m ; 34 } ; 35 36 #e n d i f Listagem B.11: grafico barras qual quant discreto.h 1 #i n c l u d e ” h i s t o g r a m a q u a n t c o n t i n u o . h ” 2 3 #i n c l u d e < q w t p l o t g r i d . h> 4 5 c l a s s Histogram : p u b l i c QwtPlotHistogram 6 { 7 public : 8 H i s t o g r a m ( c o n s t Q S t r i n g & , c o n s t QColor &) ; 9 10 v o i d s e t C o l o r ( c o n s t QColor &) ; 11 void setValues ( 12 c o n s t v e c t o r <i n t > &v a l o r e s , 13 c o n s t v e c t o r <p a i r <d o u b l e , d o u b l e >> &i n t e r v a l o s , 14 c o n s t i n t numVal ) ; 15 } ; 16 17 H i s t o g r a m : : H i s t o g r a m ( c o n s t Q S t r i n g & t i t l e , c o n s t QColor &s y m b o l C o l o r ) : 18 Q w t P l o t H i s t o g r a m ( t i t l e ) 19 { 20 s e t S t y l e ( Q w t P l o t H i s t o g r a m : : Columns ) ; 21 s e t C o l o r ( symbolColor ) ; 22 } 23 24 v o i d H i s t o g r a m : : s e t C o l o r ( c o n s t QColor &c o l o r ) 25 { 26 QColor c = c o l o r ; 27 // c . s e t A l p h a ( 1 8 0 ) ; // t r a n s p a r e n c i a 28 s e t B r u s h ( QBrush ( c ) ) ; 29 } 30 31 v o i d H i s t o g r a m : : s e t V a l u e s ( 32 c o n s t v e c t o r <i n t > &f r e q u e n c i a s , 33 c o n s t v e c t o r <p a i r <d o u b l e , d o u b l e >> &i n t e r v a l o s , 34 c o n s t i n t numVal ) 35 { 36 QVector<Q w t I n t e r v a l S a m p l e > s a m p l e s ( numVal ) ; 37 f o r ( u i n t i = 0 ; i < numVal ; i ++) 38 { 39 QwtInterval i n t e r v a l ( i n t e r v a l o s [ i ] . f i r s t , i n t e r v a l o s [ i ] . second ) ; 40 i n t e r v a l . s e t B o r d e r F l a g s ( Q w t I n t e r v a l : : ExcludeMaximum ) ; 41 42 samples [ i ] = QwtIntervalSample ( f r e q u e n c i a s [ i ] , i n t e r v a l ) ; 43 } 44 45 s e t D a t a ( new Q w t I n t e r v a l S e r i e s D a t a ( s a m p l e s ) ) ; 46 } 47 48 H i s t o g r a m a Q u a n t C o n t i n u o : : H i s t o g r a m a Q u a n t C o n t i n u o ( 49 c o n s t v e c t o r <i n t > &f r e q u e n c i a s , 50 c o n s t v e c t o r <p a i r <d o u b l e , d o u b l e >> &i n t e r v a l o s , 51 c o n s t i n t numVal , 52 QWidget ∗ p a r e n t ) : 53 QwtPlot ( p a r e n t ) 54 { 55 setAutoReplot ( f a l s e ) ; 56 57 QwtPlotCanvas ∗ c a n v a s = new QwtPlotCanvas ( ) ; 58 // c a n v a s−>s e t P a l e t t e ( Qt : : g r a y ) ; 59 // c a n v a s−>s e t B o r d e r R a d i u s ( 1 0 ) ; 60 setCanvas ( canvas ) ; 61 62 p l o t L a y o u t ( )−>s e t A l i g n C a n v a s T o S c a l e s ( t r u e ) ; 63 64 p o p u l a t e ( f r e q u e n c i a s , i n t e r v a l o s , numVal ) ; 65 66 replot () ; 67 } 68 69 v o i d H i s t o g r a m a Q u a n t C o n t i n u o : : p o p u l a t e ( 70 c o n s t v e c t o r <i n t > &f r e q u e n c i a s , 71 c o n s t v e c t o r <p a i r <d o u b l e , d o u b l e >> &i n t e r v a l o s , 72 c o n s t i n t numVal ) 137 73 74 75 76 77 78 79 80 81 82 83 84 85 86 { Q w t P l o t G r i d ∗ g r i d = new Q w t P l o t G r i d ( ) ; g r i d −>a t t a c h ( t h i s ) ; g r i d −>s e t P e n ( QPen ( QColor ( 2 0 0 , 2 0 0 , 2 0 0 ) ) ) ; H i s t o g r a m ∗ h i s t o g r a m = new H i s t o g r a m ( ” ” , Qt : : b l u e ) ; h i s t o g r a m−>s e t V a l u e s ( f r e q u e n c i a s , intervalos , numVal ) ; t h i s −>d e t a c h I t e m s ( QwtPlotItem : : R t t i P l o t H i s t o g r a m , true ) ; h i s t o g r a m−>a t t a c h ( t h i s ) ; } Listagem B.12: histograma quant continuo.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #i f n d e f #d e f i n e HISTOGRAMA H HISTOGRAMA H #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <q w t <q w t <q w t <q w t <q w t <q w t <q w t <q w t <q w t #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <qpen . h> < s t d l i b . h> <v e c t o r > <s t r i n g > using p l o t . h> p l o t l a y o u t . h> p l o t c a n v a s . h> p l o t r e n d e r e r . h> l e g e n d . h> l e g e n d l a b e l . h> p l o t h i s t o g r a m . h> c o l u m n s y m b o l . h> s e r i e s d a t a . h> namespace std ; c l a s s HistogramaQuantContinuo : { Q OBJECT public QwtPlot public : HistogramaQuantContinuo ( c o n s t v e c t o r <i n t > &f r e q u e n c i a s , c o n s t v e c t o r <p a i r <d o u b l e , d o u b l e >> &i n t e r v a l o s , c o n s t i n t numVal , QWidget ∗ p a r e n t = NULL) ; private : void populate ( c o n s t v e c t o r <i n t > &f r e q u e n c i a s , c o n s t v e c t o r <p a i r <d o u b l e , d o u b l e >> &i n t e r v a l o s , c o n s t i n t numVal ) ; }; #e n d i f Listagem B.13: histograma quant continuo.h 1 #i n c l u d e ” i t e m t a b e l a e d i t o r a . h ” 2 3 #i n c l u d e <QLocale> 4 5 I t e m T a b e l a E d i t o r a : : I t e m T a b e l a E d i t o r a ( ) : QStandardItem ( ) { } 6 I t e m T a b e l a E d i t o r a : : I t e m T a b e l a E d i t o r a ( Q S t r i n g &d a t a ) : Q S t a n d a r d I t e m ( d a t a ) { } 7 8 b o o l I t e m T a b e l a E d i t o r a : : o p e r a t o r < ( c o n s t Q S t a n d a r d I t e m &o t h e r ) c o n s t 9 { 10 bool okThis ; 11 b o o l okOther ; 12 13 double t h i s D b l = QLocale ( QLocale : : Portuguese , QLocale : : B r a z i l ) . toDouble ( t h i s −>t e x t ( ) , &o k T h i s ) ; 14 double otherDbl = QLocale ( QLocale : : Portuguese , QLocale : : B r a z i l ) . t o D o u b l e ( o t h e r . t e x t ( ) , &o k O t h e r ) ; 138 15 16 17 18 19 20 21 22 23 // Se o s d o i s f o r e m d o u b l e ; i f ( o k T h i s && o k O t h e r ) { return thisDbl < otherDbl ; } return Q S t a n d a r d I t e m : : o p e r a t o r <( o t h e r ) ; } Listagem B.14: item tabela editora.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #i f n d e f ITEMTABELAEDITORA H #d e f i n e ITEMTABELAEDITORA H #i n c l u d e <QStandardItem> c l a s s I t e m T a b e l a E d i t o r a : p u b l i c QStandardItem { public : ItemTabelaEditora () ; I t e m T a b e l a E d i t o r a ( Q S t r i n g &d a t a ) ; b o o l o p e r a t o r < ( c o n s t Q S t a n d a r d I t e m &o t h e r ) c o n s t ; b o o l o p e r a t o r <( c o n s t I t e m T a b e l a E d i t o r a &o t h e r ) c o n s t ; }; #e n d i f Listagem B.15: item tabela editora.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 #i n c l u d e ” p o p u l a d o r . h” #i n c l u d e #i n c l u d e ” i t e m t a b e l a e d i t o r a . h” ” u t i l i d a d e s . h” #i n c l u d e <QStandardItemModel> #i n c l u d e <Q C o r e A p p l i c a t i o n > #i n c l u d e <c a s s e r t > void Populador : : populeTabela ( QTableView ∗ t a b e l a , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <v e c t o r <s t r i n g >> &l i n h a s ) { const const size t size t totalLinhas = linhas . size () ; totalColunas = atributos . s i z e () ; Q P r o g r e s s D i a l o g ∗ p r o g r e s s = new Q P r o g r e s s D i a l o g ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r e e n c h e n d o t a b e l a de e d i ç ã o . . . ” ) , ” ” , 0 , 1 0 0 , NULL) ; p r o g r e s s −>s e t W i n d o w T i t l e ( Q S t r i n g : : f r o m L a t i n 1 ( ” Aguarde ” ) ) ; p r o g r e s s −>s e t W i n d o w M o d a l i t y ( Qt : : A p p l i c a t i o n M o d a l ) ; p r o g r e s s −>s e t W i n d o w F l a g s ( p r o g r e s s −>w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint & ˜Qt : : W i n d o w C l o s e B u t t o n H i n t | Qt : : MSWindowsFixedSizeDialogHint ) ; p r o g r e s s −>s e t C a n c e l B u t t o n (NULL) ; p r o g r e s s −>s e t V a l u e ( 0 ) ; p r o g r e s s −>show ( ) ; c o n s t i n t t a x a N o t i f i c a c a o = t o t a l L i n h a s <= 10 ? 10 s i z e t i = 0; : totalLinhas / 10; QStandardItemModel ∗ model = ( QStandardItemModel ∗ ) t a b e l a −>model ( ) ; model−>setColumnCount ( t o t a l C o l u n a s ) ; model−>setRowCount ( t o t a l L i n h a s ) ; ItemTabelaEditora ∗ item ; t a b e l a −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; t a b e l a −>b l o c k S i g n a l s ( t r u e ) ; model−>b l o c k S i g n a l s ( t r u e ) ; s i z e t coluna = 0; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . c b e g i n ( ) ; c i t A t r i b u t o != a t r i b u t o s . c e n d ( ) ; c i t A t r i b u t o ++, c o l u n a ++) 139 { 45 46 i t e m = new I t e m T a b e l a E d i t o r a ( Q S t r i n g : : f r o m L a t i n 1 ( c i t A t r i b u t o −>c s t r () ) ) ; model−>s e t H o r i z o n t a l H e a d e r I t e m ( c o l u n a , i t e m ) ; 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 } s i z e t linha = 0; coluna = 0; f o r ( v e c t o r <v e c t o r <s t r i n g >>:: c o n s t i t e r a t o r c i t L i n h a = l i n h a s . c b e g i n ( ) ; c i t L i n h a != l i n h a s . c e n d ( ) ; c i t L i n h a ++, l i n h a ++) { coluna = 0; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t C o l u n a = c i t L i n h a −>c b e g i n ( ) ; c i t C o l u n a != c i t L i n h a −>c e n d ( ) ; c i t C o l u n a ++, c o l u n a ++) { i t e m = new I t e m T a b e l a E d i t o r a ( Q S t r i n g : : f r o m L a t i n 1 ( c i t C o l u n a −> c str () ) ) ; i t e m−>s e t D a t a ( Qt : : A l i g n R i g h t , Qt : : T e x t A l i g n m e n t R o l e ) ; model−>s e t I t e m ( l i n h a , c o l u n a , i t e m ) ; } 62 63 64 65 66 67 68 69 i ++; i f ( ( i % t a x a N o t i f i c a c a o ) == 0 ) { p r o g r e s s −>s e t V a l u e ( min ( ( i n t ) ( i ∗ 1 . 0 / t o t a l L i n h a s ; Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : ExcludeUserInputEvents ) ; } 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ∗ 100) , 99) ) } t a b e l a −>b l o c k S i g n a l s ( f a l s e ) ; t a b e l a −>s e t U p d a t e s E n a b l e d ( t r u e ) ; model−>b l o c k S i g n a l s ( f a l s e ) ; e m i t model−>l a y o u t C h a n g e d ( ) ; // t a b e l a −>r e s i z e C o l u m n s T o C o n t e n t s ( ) ; delete lento demais progress ; } void Populador : : populeColunaTabelaEditora ( c o n s t map<s i z e t , s t r i n g > &v a l o r e s C o l u n a , const int indiceColuna , QTableView ∗ t a b e l a , const string atributo ) { QStandardItemModel ∗ model = ( QStandardItemModel ∗ ) t a b e l a −>model ( ) ; a s s e r t ( model−>rowCount ( ) == v a l o r e s C o l u n a . s i z e ( ) ) ; t a b e l a −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; t a b e l a −>b l o c k S i g n a l s ( t r u e ) ; model−>b l o c k S i g n a l s ( t r u e ) ; ItemTabelaEditora ∗ item ; if { ( ! a t r i b u t o . empty ( ) ) i t e m = new I t e m T a b e l a E d i t o r a ( Q S t r i n g : : f r o m L a t i n 1 ( a t r i b u t o . c s t r ( ) ) ) ; model−>s e t H o r i z o n t a l H e a d e r I t e m ( i n d i c e C o l u n a , i t e m ) ; } const for { int t o t a l L i n h a s = model−>rowCount ( ) ; ( int linha = 0; const s i z e t i n d i c e R e g i s t r o = model−>i t e m ( l i n h a , toLatin1 () . toInt () ; linha < totalLinhas ; l i n h a ++) 0 )−>t e x t ( ) . i t e m = ( I t e m T a b e l a E d i t o r a ∗ ) ( model−>i t e m ( l i n h a , i n d i c e C o l u n a ) ) ; i f ( ! item ) { i t e m = new I t e m T a b e l a E d i t o r a ( ) ; i t e m−>s e t D a t a ( Qt : : A l i g n R i g h t , Qt : : T e x t A l i g n m e n t R o l e ) ; model−>s e t I t e m ( l i n h a , i n d i c e C o l u n a , i t e m ) ; } i t e m−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( v a l o r e s C o l u n a . a t ( i n d i c e R e g i s t r o ) . 140 c str () ) ) ; 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 } t a b e l a −>s e t U p d a t e s E n a b l e d ( t r u e ) ; t a b e l a −>b l o c k S i g n a l s ( f a l s e ) ; model−>b l o c k S i g n a l s ( f a l s e ) ; e m i t model−>l a y o u t C h a n g e d ( ) ; // t a b e l a −>r e s i z e C o l u m n T o C o n t e n t s ( i n d i c e C o l u n a ) ; lento demais } void Populador : : populeLinhaTabela ( c o n s t v e c t o r <s t r i n g > &v a l o r e s L i n h a , const int linhaTabela , QTableView ∗ t a b e l a ) { QStandardItemModel ∗ model = ( QStandardItemModel ∗ ) t a b e l a −>model ( ) ; a s s e r t ( v a l o r e s L i n h a . s i z e ( ) == model−>columnCount ( ) ) ; ItemTabelaEditora ∗ item ; t a b e l a −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; t a b e l a −>b l o c k S i g n a l s ( t r u e ) ; model−>b l o c k S i g n a l s ( t r u e ) ; s i z e t coluna = 0; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t V a l o r = v a l o r e s L i n h a . c b e g i n ( ) ; c i t V a l o r != v a l o r e s L i n h a . c e n d ( ) ; c i t V a l o r ++, c o l u n a ++) { i t e m = new I t e m T a b e l a E d i t o r a ( Q S t r i n g : : f r o m L a t i n 1 ( c i t V a l o r −>c s t r ( ) ) ); i t e m−>s e t D a t a ( Qt : : A l i g n R i g h t , Qt : : T e x t A l i g n m e n t R o l e ) ; model−>s e t I t e m ( l i n h a T a b e l a , c o l u n a , i t e m ) ; } t a b e l a −>s e t U p d a t e s E n a b l e d ( t r u e ) ; t a b e l a −>b l o c k S i g n a l s ( f a l s e ) ; model−>b l o c k S i g n a l s ( f a l s e ) ; e m i t model−>l a y o u t C h a n g e d ( ) ; // t a b e l a −>−>r e s i z e C o l u m n s T o C o n t e n t s ( ) ; lento demais } void Populador : : p o p u l e C e l u l a s E s p e c i f i c a s T a b e l a ( c o n s t v e c t o r <p a i r <s i z e t , s i z e t >> &c e l u l a s I n d i c e s , c o n s t v e c t o r <s t r i n g > &v a l o r e s , QTableView ∗ t a b e l a ) { QStandardItemModel ∗ model = ( QStandardItemModel ∗ ) t a b e l a −>model ( ) ; a s s e r t ( c e l u l a s I n d i c e s . s i z e ( ) == v a l o r e s . s i z e ( ) ) ; ItemTabelaEditora ∗ item ; t a b e l a −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; t a b e l a −>b l o c k S i g n a l s ( t r u e ) ; model−>b l o c k S i g n a l s ( t r u e ) ; v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t V a l o r = v a l o r e s . c b e g i n ( ) ; f o r ( v e c t o r <p a i r <s i z e t , s i z e t >>:: c o n s t i t e r a t o r c i t C e l u l a I n d i c e = c e l u l a s I n d i c e s . cbegin () ; c i t C e l u l a I n d i c e != c e l u l a s I n d i c e s . c e n d ( ) ; c i t C e l u l a I n d i c e ++, c i t V a l o r ++) { c o n s t s i z e t l i n h a = c i t C e l u l a I n d i c e −> f i r s t ; c o n s t s i z e t c o l u n a = c i t C e l u l a I n d i c e −>s e c o n d ; const string valorStr = ∗ citValor ; i t e m = new I t e m T a b e l a E d i t o r a ( Q S t r i n g : : f r o m L a t i n 1 ( v a l o r S t r . c s t r ( ) ) ) ; i t e m−>s e t D a t a ( Qt : : A l i g n R i g h t , Qt : : T e x t A l i g n m e n t R o l e ) ; model−>s e t I t e m ( l i n h a , c o l u n a , i t e m ) ; } t a b e l a −>s e t U p d a t e s E n a b l e d ( t r u e ) ; t a b e l a −>b l o c k S i g n a l s ( f a l s e ) ; model−>b l o c k S i g n a l s ( f a l s e ) ; e m i t model−>l a y o u t C h a n g e d ( ) ; // t a b e l a −>−>r e s i z e C o l u m n s T o C o n t e n t s ( ) ; lento demais 141 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 } void P o p u l a d o r : : populeComboBox ( QComboBox ∗combo , c o n s t v e c t o r <s t r i n g > &v a l o r e s ) { combo−>b l o c k S i g n a l s ( t r u e ) ; combo−>c l e a r ( ) ; for ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t V a l o r != v a l o r e s . c e n d ( ) ; c i t V a l o r ++) citValor = valores . cbegin () ; { combo−>addItem ( Q S t r i n g : : f r o m L a t i n 1 ( c i t V a l o r −>c s t r ( ) ) ) ; } combo−>b l o c k S i g n a l s ( f a l s e ) ; } void Populador : : populeListWidget ( QListWidget ∗ l i s t , c o n s t v e c t o r <s t r i n g > &v a l o r e s ) { l i s t −>b l o c k S i g n a l s ( t r u e ) ; l i s t −>c l e a r ( ) ; QListWidgetItem ∗ item ; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t V a l o r = v a l o r e s . c b e g i n ( ) ; c i t V a l o r != v a l o r e s . c e n d ( ) ; c i t V a l o r ++) { i t e m = new Q L i s t W i d g e t I t e m ( ) ; i t e m−>s e t D a t a ( Qt : : D i s p l a y R o l e , Q S t r i n g : : f r o m L a t i n 1 ( c i t V a l o r −>c s t r () ) ) ; i t e m−>s e t D a t a ( Qt : : C h e c k S t a t e R o l e , Qt : : Unchecked ) ; l i s t −>addItem ( i t e m ) ; } l i s t −>b l o c k S i g n a l s ( f a l s e ) ; } void Populador : : populeArvoreTipos ( QTreeWidget ∗ a r v o r e , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <TipoDado AT> &t i p o s ) { a r v o r e −>b l o c k S i g n a l s ( t r u e ) ; a s s e r t ( a t r i b u t o s . s i z e ( ) == t i p o s . s i z e ( ) ) ; a r v o r e −>c l e a r ( ) ; QTreeWidgetItem ∗ nodoQuantContinuo = new QTreeWidgetItem ( a r v o r e ) ; nodoQuantContinuo−>s e t T e x t ( 0 , Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o C o n tı́ n u o ” ) ) ; a r v o r e −>a d d T o p L e v e l I t e m ( nodoQuantContinuo ) ; QTreeWidgetItem ∗ n o d o Q u a n t D i s c r e t o = new QTreeWidgetItem ( a r v o r e ) ; n o d o Q u a n t D i s c r e t o−>s e t T e x t ( 0 , Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o Discreto ”) ) ; a r v o r e −>a d d T o p L e v e l I t e m ( n o d o Q u a n t D i s c r e t o ) ; QTreeWidgetItem ∗ n o d o Q u a l i t a t i v o = new QTreeWidgetItem ( a r v o r e ) ; n o d o Q u a l i t a t i v o −>s e t T e x t ( 0 , Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a l i t a t i v o ” ) ) ; a r v o r e −>a d d T o p L e v e l I t e m ( n o d o Q u a l i t a t i v o ) ; QTreeWidgetItem ∗ c h i l d ; v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . c b e g i n ( ) ; f o r ( v e c t o r <TipoDado AT > : : c o n s t i t e r a t o r c i t T i p o = t i p o s . c b e g i n ( ) ; c i t T i p o != t i p o s . c e n d ( ) ; c i t T i p o ++, c i t A t r i b u t o ++) { i f ( ∗ c i t T i p o == QUALITATIVO) { c h i l d = new QTreeWidgetItem ( n o d o Q u a l i t a t i v o ) ; } e l s e i f ( ∗ c i t T i p o == QUANT CONTINUO) { 142 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 c h i l d = new QTreeWidgetItem ( nodoQuantContinuo ) ; } else { ( ∗ c i t T i p o == QUANT DISCRETO) } c h i l d −>s e t T e x t ( 0 , Q S t r i n g : : f r o m L a t i n 1 ( c i t A t r i b u t o −>c s t r ( ) ) ) ; } a r v o r e −>b l o c k S i g n a l s ( f a l s e ) ; } void Populador : : p o p u l e T a b e l a E s t a t i s t i c a ( QTableWidget ∗ t a b e l a , c o n s t v e c t o r <p a i r <s t r i n g , d o u b l e >> &i n f o r m a c o e s ) { Q A b s t r a c t I t e m M o d e l ∗ model = t a b e l a −>model ( ) ; t a b e l a −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; t a b e l a −>b l o c k S i g n a l s ( t r u e ) ; model−>b l o c k S i g n a l s ( t r u e ) ; t a b e l a −>setRowCount ( 0 ) ; t a b e l a −>setRowCount ( i n f o r m a c o e s . s i z e ( ) ) ; t a b e l a −>setColumnCount ( 2 ) ; s i z e t linha = 0; f o r ( v e c t o r <p a i r <s t r i n g , d o u b l e >>:: c o n s t i t e r a t o r c i t I n f = i n f o r m a c o e s . cbegin () ; c i t I n f != i n f o r m a c o e s . c e n d ( ) ; c i t I n f ++, l i n h a ++) { QTableWidgetItem ∗ i t e m = new QTableWidgetItem ( Q S t r i n g : : f r o m L a t i n 1 ( c i t I n f −> f i r s t . c s t r ( ) ) ) ; t a b e l a −>s e t I t e m ( l i n h a , 0 , i t e m ) ; 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 // i f c h i l d = new QTreeWidgetItem ( n o d o Q u a n t D i s c r e t o ) ; i t e m = new QTableWidgetItem ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : d b l T o S t d S t r ( c i t I n f −>s e c o n d ) . c s t r ( ) ) ) ; t a b e l a −>s e t I t e m ( l i n h a , 1 , i t e m ) ; } t a b e l a −>s e t U p d a t e s E n a b l e d ( t r u e ) ; t a b e l a −>b l o c k S i g n a l s ( f a l s e ) ; model−>b l o c k S i g n a l s ( f a l s e ) ; e m i t model−>l a y o u t C h a n g e d ( ) ; } Listagem B.16: populador.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #i f n d e f POPULADOR H #d e f i n e POPULADOR H #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <QTableView> <QTableWidget> <QComboBox> <Q L i s t W i d g e t> <QTreeWidget> <s t r i n g > #i n c l u d e ” enums at . h” using namespace std ; c l a s s Populador { public : s t a t i c void populeTabela ( QTableView ∗ t a b e l a , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <v e c t o r <s t r i n g >> &l i n h a s ) ; s t a t i c void populeColunaTabelaEditora ( c o n s t map<s i z e t , s t r i n g > &v a l o r e s C o l u n a , const int indiceColuna , QTableView ∗ t a b e l a , c o n s t s t r i n g nome = ” ” ) ; static void populeLinhaTabela ( 143 30 c o n s t v e c t o r <s t r i n g > &v a l o r e s L i n h a , 31 const int linhaTabela , 32 QTableView ∗ t a b e l a ) ; 33 34 s t a t i c void populeCelulasEspecificasTabela ( 35 c o n s t v e c t o r <p a i r <s i z e t , s i z e t >> &c e l u l a s I n d i c e s , 36 c o n s t v e c t o r <s t r i n g > &v a l o r e s , 37 QTableView ∗ t a b e l a ) ; 38 39 s t a t i c v o i d populeComboBox ( 40 QComboBox ∗combo , 41 c o n s t v e c t o r <s t r i n g > &v a l o r e s ) ; 42 43 s t a t i c void populeListWidget ( 44 QListWidget ∗ l i s t , 45 c o n s t v e c t o r <s t r i n g > &v a l o r e s ) ; 46 47 s t a t i c void populeArvoreTipos ( 48 QTreeWidget ∗ a r v o r e , 49 c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , 50 c o n s t v e c t o r <TipoDado AT> &t i p o s ) ; 51 52 s t a t i c void populeTabelaEstatistica ( 53 QTableWidget ∗ t a b e l a , 54 c o n s t v e c t o r <p a i r <s t r i n g , d o u b l e >> &i n f o r m a c o e s ) ; 55 } ; 56 #e n d i f Listagem B.17: populador.h 1 #i n c l u d e ” d i a g r a m a c a i x a . h ” 2 3 D i a g r a m a C a i x a : : D i a g r a m a C a i x a ( QWidget ∗ p a r e n t ) 4 : QCustomPlot ( p a r e n t ) 5 { 6 c a i x a = new Q C P S t a t i s t i c a l B o x ( x A x i s , y A x i s ) ; 7 c a i x a −>s e t K e y ( 1 ) ; 8 9 addPlottable ( caixa ) ; 10 11 x A x i s−>s e t S u b T i c k C o u n t ( 0 ) ; 12 x A x i s−>s e t T i c k L e n g t h ( 0 , 4 ) ; 13 // x A x i s−>s e t T i c k L a b e l R o t a t i o n ( 2 0 ) ; 14 x A x i s−>s e t A u t o T i c k s ( f a l s e ) ; 15 x A x i s−>s e t A u t o T i c k L a b e l s ( f a l s e ) ; 16 x A x i s−>s e t T i c k V e c t o r ( QVector<d o u b l e >() << 1 ) ; 17 18 rescaleAxes () ; 19 x A x i s−>s c a l e R a n g e ( 2 , x A x i s−>r a n g e ( ) . c e n t e r ( ) ) ; // l a r g u r a da c a i x a 20 s e t I n t e r a c t i o n s (QCP : : i R a n g e D r a g | QCP : : iRangeZoom ) ; 21 22 replot () ; 23 } 24 25 D i a g r a m a C a i x a : : ˜ D i a g r a m a C a i x a ( ) 26 { 27 c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; 28 qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; 29 } 30 31 v o i d D i a g r a m a C a i x a : : s e t D a d o s ( 32 c o n s t s t r i n g &a t r i b u t o , 33 c o n s t d o u b l e maximo , 34 const double whiskerSuperior , 35 const double q u a r t i l S u p e r i o r , 36 c o n s t d o u b l e mediana , 37 const double q u a r t i l I n f e r i o r , 38 const double w h i s k e r I n f e r i o r , 39 c o n s t d o u b l e minimo , 40 c o n s t v e c t o r <d o u b l e > & o u t l i e r s ) 41 { 42 c o n s t d o u b l e d i f e r e n c a = ( ( maximo − minimo ) != 0 ) ? maximo − minimo : 100; 43 c a i x a −>setMaximum ( w h i s k e r S u p e r i o r ) ; 44 45 c a i x a −>s e t U p p e r Q u a r t i l e ( q u a r t i l S u p e r i o r ) ; 46 c a i x a −>s e t M e d i a n ( mediana ) ; 47 c a i x a −>s e t L o w e r Q u a r t i l e ( q u a r t i l I n f e r i o r ) ; 48 c a i x a −>setMinimum ( w h i s k e r I n f e r i o r ) ; 144 c a i x a −>s e t O u t l i e r s ( QVector<d o u b l e > : : f r o m S t d V e c t o r ( o u t l i e r s ) ) ; 49 50 51 x A x i s−>s e t T i c k V e c t o r L a b e l s ( QVector<Q S t r i n g >() << Q S t r i n g : : f r o m L a t i n 1 ( atributo . c str () ) ) ; y A x i s−>s e t R a n g e ( w h i s k e r I n f e r i o r − 0 . 0 5 ∗ d i f e r e n c a , w h i s k e r S u p e r i o r + 0.05 ∗ diferenca ) ; 52 53 54 55 replot () ; } Listagem B.18: diagrama caixa.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #i f n d e f DIAGRAMA CAIXA H #d e f i n e DIAGRAMA CAIXA H #i n c l u d e <q c u s t o m p l o t . h> #i n c l u d e <v e c t o r > #i n c l u d e <s t r i n g > using namespace std ; c l a s s D i a g r a m a C a i x a : p u b l i c QCustomPlot { public : D i a g r a m a C a i x a ( QWidget ∗ p a r e n t ) ; ˜ DiagramaCaixa ( ) ; void DiagramaCaixa : : s e tD a d o s ( c o n s t s t r i n g &a t r i b u t o , c o n s t d o u b l e max , const double whiskerSuperior , const double q u a r t i l S u p e r i o r , c o n s t d o u b l e mediana , const double q u a r t i l I n f e r i o r , const double w h i s k e r I n f e r i o r , c o n s t d o u b l e min , c o n s t v e c t o r <d o u b l e > & o u t l i e r s ) ; private : QCPStatisticalBox ∗ c a i x a ; }; #e n d i f // DIAGRAMA CAIXA H Listagem B.19: diagrama caixa.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #i n c l u d e ” d i a g r a m a s c a t t e r . h” #i n c l u d e ” u t i l i d a d e s . h” #i n c l u d e < q w t p l o t g r i d . h> #i n c l u d e <q w t p l o t m a g n i f i e r . h> #i n c l u d e <q w t p l o t p a n n e r . h> DiagramaDispersao : : DiagramaDispersao ( bool t r e s V a r i a v e i s , QwtPlot ( p a r e n t ) , t i t u l o L e g e n d a (NULL) QWidget ∗ p a r e n t ) { setAutoReplot ( f a l s e ) ; if { ( tresVariaveis ) t i t u l o L e g e n d a = new Q w t P l o t T e x t L a b e l ( ) ; t i t u l o L e g e n d a −>a t t a c h ( t h i s ) ; i n s e r t L e g e n d ( new QwtLegend ( ) , } s e t C a n v a s B a c k g r o u n d ( Qt : : w h i t e ) ; Q L i s t<Q S t r i n g> a ; a . push back ( ”” ) ; setTotalCurvas ( a . s i z e () , a) ; QwtPlot : : R i g h t L e g e n d ) ; : 145 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 Q w t P l o t G r i d ∗ g r i d = new Q w t P l o t G r i d ( ) ; g r i d −>a t t a c h ( t h i s ) ; g r i d −>s e t P e n ( QPen ( QColor ( 2 0 0 , 2 0 0 , 2 0 0 ) ) ) ; // p a n n i n g w i t h t h e l e f t mouse b u t t o n ( v o i d ) new QwtPlotPanner ( c a n v a s ( ) ) ; // zoom i n / o u t w i t h t h e w h e e l Q w t P l o t M a g n i f i e r ∗ m a g n i f i e r = new Q w t P l o t M a g n i f i e r ( m a g n i f i e r −>s e t M o u s e B u t t o n ( Qt : : NoButton ) ; m a g n i f i e r −>s e t W h e e l F a c t o r ( − 1 . 1 ) ; ); } void { DiagramaDispersao : : setTituloLegenda ( QString if { titulo ) ( tituloLegenda ) QwtText t i t l e ( t i t u l o ) ; t i t l e . s e t R e n d e r F l a g s ( Qt : : A l i g n R i g h t | Qt : : A l i g n T o p t i t l e . s e t F o n t ( a x i s T i t l e ( QwtPlot : : xBottom ) . f o n t ( ) ) ; t i t u l o L e g e n d a −>s e t T e x t ( t i t l e ) ; ); } } DiagramaDispersao : : ˜ DiagramaDispersao ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; clearPoints () ; for { ( int i = 0; delete i < curvas . s i z e () ; i ++) curvas [ i ] ; } curvas . c l e a r () ; delete tituloLegenda ; } void { DiagramaDispersao : : setTotalCurvas ( i n t total , Q L i s t<Q S t r i n g> a t r i b u t o s ) clearPoints () ; for { ( int i = 0; delete i < curvas . s i z e () ; i ++) curvas [ i ] ; } curvas . c l e a r () ; if { ( total < 0 || atributos . size () != total ) return ; } Q w t P o i n t S e r i e s D a t a ∗ dadosCurva ; QwtPlotCurve ∗ novaCurva ; for { ( int i = 0; i < total ; i ++) d a d o s C u r v a = new Q w t P o i n t S e r i e s D a t a ( ) ; novaCurva = new QwtPlotCurve ( a t r i b u t o s [ i ] ) ; novaCurva−>s e t D a t a ( d a d o s C u r v a ) ; novaCurva−>s e t R e n d e r H i n t ( QwtPlotItem : : R e n d e r A n t i a l i a s e d ) ; novaCurva−>s e t P e n ( QPen ( QColor ( U t i l i d a d e s : : c o r e s D i s t i n t a s [ i % 5 6 ] . c str () ) ) ) ; novaCurva−>s e t S t y l e ( QwtPlotCurve : : NoCurve ) ; novaCurva−>s e t S y m b o l ( new QwtSymbol ( QwtSymbol : : XCross , Qt : : NoBrush , QPen ( QColor ( U t i l i d a d e s : : c o r e s D i s t i n t a s [ i % 5 6 ] . c s t r ( ) ) ) , QSize ( 4 , 4) ) ) ; novaCurva−>a t t a c h ( t h i s ) ; 97 98 99 100 101 102 103 104 105 106 107 canvas ( ) c u r v a s . append ( novaCurva ) ; } } void { DiagramaDispersao : : c l e a r P o i n t s ( ) QwtPlotCurve ∗ c u r v a ; 146 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 Q w t A r r a y S e r i e s D a t a <QPointF> ∗ d a t a ; for { ( int i = 0; i < curvas . s i z e () ; i ++) curva = curvas [ i ] ; d a t a = d y n a m i c c a s t <Q w t P o i n t S e r i e s D a t a ∗>( c u r v a−>d a t a ( ) ) ; d a t a−>c l e a r ( ) ; } } void DiagramaDispersao : : appendPoint ( c o n s t indiceCurva ) QPointF &p o i n t , size t { if ( indiceCurva > curvas . s i z e () ){ return ;} QwtPlotCurve ∗ c u r v a = c u r v a s [ i n d i c e C u r v a ] ; Q w t P o i n t S e r i e s D a t a ∗ d a t a = d y n a m i c c a s t <Q w t P o i n t S e r i e s D a t a ∗>( c u r v a−> data ( ) ) ; d a t a−>append ( p o i n t ) ; } Listagem B.20: diagrama scatter.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #i f n d e f DIAGRAMA DISPERSAO H #d e f i n e DIAGRAMA DISPERSAO H #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e using <q w t p l o t . h> <q w t p l o t m a r k e r . h> <q w t p l o t c u r v e . h> <q w t l e g e n d . h> < q w t s e r i e s d a t a . h> <q w t t e x t . h> <qwt math . h> <q w t p o i n t d a t a . h> <q w t s y m b o l . h> < q w t p l o t t e x t l a b e l . h> namespace std ; c l a s s D i a g r a m a D i s p e r s a o : p u b l i c QwtPlot { private : Q L i s t<QwtPlotCurve∗> c u r v a s ; QwtPlotTextLabel ∗ t i t u l o L e g e n d a ; public : D i a g r a m a D i s p e r s a o ( b o o l t r e s V a r i a v e i s = f a l s e , QWidget ∗ p a r e n t = NULL) ; ˜ DiagramaDispersao ( ) ; v o i d s e t T o t a l C u r v a s ( i n t t o t a l , Q L i s t<Q S t r i n g> a t r i b u t o s ) ; void c l e a r P o i n t s () ; v o i d a p p e n d P o i n t ( c o n s t QPointF & , s i z e t i n d i c e C u r v a = 0 ) ; void setTituloLegenda ( QString t i t u l o ) ; }; #e n d i f // DIAGRAMA DISPERSAO H Listagem B.21: diagrama scatter.h 1 #i n c l u d e ” t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . h ” 2 3 #i n c l u d e ” c o l e t o r e s t a t i s t i c a s . h ” 4 5 ThreadWorkerColetarEstatisticas : : ThreadWorkerColetarEstatisticas ( 6 c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , 7 c o n s t v e c t o r <TipoDado AT> &t i p o s , 8 c o n s t v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> &dados , 9 QWidget ∗ p a r e n t ) 10 : atributos ( atributos ) , tipos ( tipos ) , dados ( dados ) 11 { 12 t h i s −>paradaManual = f a l s e ; 13 i f ( parent ) 14 { 15 QObject : : c o n n e c t ( t h i s , SIGNAL ( f i m C o l e t a E s t a t i s t i c a s ( c o n s t s t r i n g >∗) ) , p a r e n t , SLOT( f i m C o l e t a E s t a t i s t i c a s ( c o n s t s t r i n g >∗) ) ) ; vector< vector< 147 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 } } ThreadWorkerColetarEstatisticas : : ThreadWorkerColetarEstatisticas ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , QWidget ∗ p a r e n t ) : atributos ( atributos ) { t h i s −>paradaManual = f a l s e ; i f ( parent ) { QObject : : c o n n e c t ( t h i s , SIGNAL ( f i m C o l e t a E s t a t i s t i c a s ( c o n s t s t r i n g >∗) ) , p a r e n t , SLOT( f i m C o l e t a E s t a t i s t i c a s ( c o n s t s t r i n g >∗) ) ) ; } } void { ThreadWorkerColetarEstatisticas : : pararExecucao ( ) t h i s −>paradaManual = t r u e ; } void { ThreadWorkerColetarEstatisticas : : executarCodigo () if { (! d a d o s . empty ( ) ) T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> i n i c i a l i z e ( d a d o s , tipos , this ) ; atributos , } 41 42 43 44 45 46 47 48 49 50 51 52 53 vector< vector< C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>c o l e t a r E s t a t i s t i c a s D o s A t r i b u t o s ( atributos , this ) ; c o n s t v e c t o r <s t r i n g > ∗ a t r i b u t o s = new v e c t o r <s t r i n g >( a t r i b u t o s ) ; emit f i m C o l e t a E s t a t i s t i c a s ( a t r i b u t o s ) ; emit f i n a l i z o u E x e c u c a o ( ) ; } void { ThreadWorkerColetarEstatisticas : : Notificar ( int emit ∗ porcentagem ) updateProgresso ( porcentagem ) ; } Listagem B.22: thread worker coletar estatisticas.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #i f n d e f THREADWORKERCOLETARESTATISTICAS H #d e f i n e THREADWORKERCOLETARESTATISTICAS H #i n c l u d e ” t h r e a d w o r k e r . h” #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <QObject> <QWidget> <QThread> <QMutex> <QWaitCondition> #i n c l u d e #i n c l u d e ” enums at . h” ” v a l o r b a s e . h” #i n c l u d e <v e c t o r > #i n c l u d e <s t r i n g > using namespace std ; c l a s s ThreadWorkerColetarEstatisticas p u b l i c ThreadWorker { Q OBJECT private : v e c t o r <s t r i n g > atributos ; v e c t o r <TipoDado AT> tipos ; v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> : dados ; protected : b o o l paradaManual ; public : ThreadWorkerColetarEstatisticas ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , 148 35 c o n s t v e c t o r <TipoDado AT> &t i p o s , 36 c o n s t v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> &dados , 37 QWidget ∗ p a r e n t = 0 ) ; 38 39 ThreadWorkerColetarEstatisticas ( 40 c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , 41 QWidget ∗ p a r e n t = 0 ) ; 42 43 QMutex s y n c ; 44 Q W a i t C o n d i t i o n pauseCond ; 45 bool stop ; 46 bool started ; 47 #i f n d e f TCC RODOLFO 48 void N o t i f i c a r ( StatusThread ∗ s t a t u s ) {}; 49 #e n d i f 50 void N o t i f i c a r ( i n t ∗ porcentagem ) ; 51 52 v i r t u a l void executarCodigo () ; 53 v i r t u a l void pararExecucao ( ) ; 54 55 s i g n a l s : 56 v o i d f i m C o l e t a E s t a t i s t i c a s ( c o n s t v e c t o r <s t r i n g > ∗ a t r i b u t o s ) ; 57 } ; 58 59 #e n d i f Listagem B.23: thread worker coletar estatisticas.h B.1.1 Telas 1 #i n c l u d e ” d i a l o g e d i c a o d a d o s . h ” 2 3 #i n c l u d e <QDebug> 4 5 #i n c l u d e ” w i d g e t t a b e l a e d i t o r a . h ” 6 7 D i a l o g E d i c a o D a d o s : : D i a l o g E d i c a o D a d o s ( c o n s t v e c t o r <s i z e t > &i n d i c e s R e g i s t r o s , QWidget ∗ p a r e n t ) : Q D i a l o g ( p a r e n t ) 8 { 9 ui . setupUi ( t h i s ) ; 10 11 W i d g e t T a b e l a E d i t o r a ∗ w i d g e t T a b e l a E d i t o r a = new W i d g e t T a b e l a E d i t o r a ( i n d i c e s R e g i s t r o s , parent ) ; 12 t h i s −>l a y o u t ( )−>addWidget ( w i d g e t T a b e l a E d i t o r a ) ; 13 14 s e t W i n d o w F l a g s ( ( w i n d o w F l a g s ( ) | Qt : : WindowMaximizeButtonHint ) & ˜Qt : : WindowContextHelpButtonHint ) ; 15 } 16 17 D i a l o g E d i c a o D a d o s : : ˜ D i a l o g E d i c a o D a d o s ( ) 18 { 19 c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; 20 qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; 21 } Listagem B.24: dialog edicao dados.cpp 1 #i f n d e f DIALOG EDICAO DADOS H 2 #d e f i n e DIALOG EDICAO DADOS H 3 4 #i n c l u d e ” u i d i a l o g e d i c a o d a d o s . h ” 5 6 u s i n g namespace s t d ; 7 8 c l a s s DialogEdicaoDados : p u b l i c QDialog 9 { 10 Q OBJECT 11 12 p u b l i c : 13 D i a l o g E d i c a o D a d o s ( c o n s t v e c t o r <s i z e t > &i n d i c e s R e g i s t r o s , parent = 0) ; QWidget ∗ 149 14 ˜ DialogEdicaoDados ( ) ; 15 16 p r i v a t e : 17 Ui : : D i a l o g E d i c a o D a d o s u i ; 18 } ; 19 20 #e n d i f // DIALOG EDICAO DADOS H Listagem B.25: dialog edicao dados.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g E d i c a o D a d o s </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g E d i c a o D a d o s ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >842</width> 10 <h e i g h t >491</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >E d i ç ã o d o s Dados</ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> 17 <p r o p e r t y name=” l e f t M a r g i n ”> 18 <number>0</number> 19 </ p r o p e r t y > 20 <p r o p e r t y name=” t o p M a r g i n ”> 21 <number>0</number> 22 </ p r o p e r t y > 23 <p r o p e r t y name=” r i g h t M a r g i n ”> 24 <number>0</number> 25 </ p r o p e r t y > 26 <p r o p e r t y name=” bottomMargin ”> 27 <number>0</number> 28 </ p r o p e r t y > 29 </ l a y o u t > 30 </w i d g e t > 31 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 32 < r e s o u r c e s /> 33 <c o n n e c t i o n s /> 34 </u i > Listagem B.26: dialog edicao dados.ui 1 #i n c l u d e ” d i a l o g e s c o l h e r d i s t r i b u i c a o . h ” 2 3 #i n c l u d e <QDebug> 4 5 DialogEscolherDistribuicao : : DialogEscolherDistribuicao ( 6 c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , 7 c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , 8 c o n s t W i d g e t E s c o l h e r D P : : Opcao opcao , 9 QWidget ∗ p a r e n t ) 10 : QDialog ( p a r e n t ) 11 { 12 i n i c i a l i z e ( a t r i b u t o s , i n d i c e s V a l i d o s P o r A t r i b u t o , opcao ) ; 13 } 14 15 D i a l o g E s c o l h e r D i s t r i b u i c a o : : D i a l o g E s c o l h e r D i s t r i b u i c a o ( 16 c o n s t s t r i n g &a t r i b u t o , 17 c o n s t v e c t o r <s i z e t > &i n d i c e s V a l i d o s , 18 c o n s t W i d g e t E s c o l h e r D P : : Opcao opcao , 19 QWidget ∗ p a r e n t ) 20 : QDialog ( p a r e n t ) 21 { 22 v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; 23 a t r i b u t o s . push back ( a t r i b u t o ) ; 24 25 v e c t o r <v e c t o r <s i z e t >> i n d i c e s V a l i d o s P o r A t r i b u t o = v e c t o r <v e c t o r <s i z e t >>() ; 26 i n d i c e s V a l i d o s P o r A t r i b u t o . push back ( i n d i c e s V a l i d o s ) ; 27 28 i n i c i a l i z e ( a t r i b u t o s , i n d i c e s V a l i d o s P o r A t r i b u t o , opcao ) ; 150 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 } DialogEscolherDistribuicao : : ˜ DialogEscolherDistribuicao () { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } void DialogEscolherDistribuicao : : i n i c i a l i z e ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , c o n s t W i d g e t E s c o l h e r D P : : Opcao o p c a o ) { ui . setupUi ( t h i s ) ; w i d g e t E s c o l h e r D P = new W i d g e t E s c o l h e r D P ( a t r i b u t o s , i n d i c e s V a l i d o s P o r A t r i b u t o , opcao , t h i s ) ; t h i s −>l a y o u t ( )−>addWidget ( w i d g e t E s c o l h e r D P ) ; s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; } Listagem B.27: dialog escolher distribuicao.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #i f n d e f DIAOG ESCOLHER DISTRIBUICAO H #d e f i n e DIAOG ESCOLHER DISTRIBUICAO H #i n c l u d e ” u i d i a l o g e s c o l h e r d i s t r i b u i c a o . h” #i n c l u d e ” w i d g e t e s c o l h e r d p . h” using namespace std ; class DialogEscolherDistribuicao { Q OBJECT : public QDialog public : WidgetEscolherDP ∗ w i d g e t E s c o l h e r D P ; DialogEscolherDistribuicao ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , c o n s t W i d g e t E s c o l h e r D P : : Opcao opcao , QWidget ∗ p a r e n t = 0 ) ; DialogEscolherDistribuicao ( c o n s t s t r i n g &a t r i b u t o , c o n s t v e c t o r <s i z e t > &i n d i c e s V a l i d o s , c o n s t W i d g e t E s c o l h e r D P : : Opcao opcao , QWidget ∗ p a r e n t = 0 ) ; ˜ DialogEscolherDistribuicao () ; void inicialize ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , c o n s t W i d g e t E s c o l h e r D P : : Opcao o p c a o ) ; private : Ui : : D i a l o g E s c o l h e r D i s t r i b u i c a o ui ; }; #e n d i f // DIAOG ESCOLHER DISTRIBUICAO H Listagem B.28: dialog escolher distribuicao.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g E s c o l h e r D i s t r i b u i c a o </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g E s c o l h e r D i s t r i b u i c a o ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >609</width> 10 <h e i g h t >396</ h e i g h t > 11 </ r e c t > 151 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >E s c o l h e r D i s t r i b u i c ã o </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”/> 17 </w i d g e t > 18 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 19 < r e s o u r c e s /> 20 <c o n n e c t i o n s /> 21 </u i > Listagem B.29: dialog escolher distribuicao.ui 1 #i n c l u d e ” d i a l o g e s c o l h e r R L S . h ” 2 3 #i n c l u d e ” p o p u l a d o r . h ” 4 5 #i n c l u d e <QDebug> 6 7 D i a l o g E s c o l h e r R L S : : D i a l o g E s c o l h e r R L S ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s D e p , c o n s t v e c t o r <s t r i n g > &t o d o s A t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> & i n d i c e s V a l i d o s P o r A t r i b u t o , QWidget ∗ p a r e n t ) 8 : QDialog ( p a r e n t ) 9 { 10 i n i c i a l i z e ( atributosDep , todosAtributos , indicesValidosPorAtributo ) ; 11 } 12 13 D i a l o g E s c o l h e r R L S : : D i a l o g E s c o l h e r R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t v e c t o r <s t r i n g > &t o d o s A t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> & i n d i c e s V a l i d o s P o r A t r i b u t o , QWidget ∗ p a r e n t ) 14 : QDialog ( p a r e n t ) 15 { 16 v e c t o r <s t r i n g > a t r i b u t o s D e p = v e c t o r <s t r i n g >() ; 17 atributosDep . push back ( atributoDep ) ; 18 19 i n i c i a l i z e ( atributosDep , todosAtributos , indicesValidosPorAtributo ) ; 20 } 21 22 D i a l o g E s c o l h e r R L S : : ˜ D i a l o g E s c o l h e r R L S ( ) 23 { 24 c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; 25 qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; 26 } 27 28 v o i d D i a l o g E s c o l h e r R L S : : i n i c i a l i z e ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s D e p , c o n s t v e c t o r <s t r i n g > &t o d o s A t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> & indicesValidosPorAtributo ) 29 { 30 ui . setupUi ( t h i s ) ; 31 atributosDep = atributosDep ; 32 33 34 P o p u l a d o r : : populeComboBox ( u i . c o m b o B o x A t r i b u t o s , atributosDep ) ; 35 36 i f ( a t r i b u t o s D e p . s i z e ( ) == 1 ) 37 { 38 u i . l a b e l A t r i b u t o −>s e t V i s i b l e ( f a l s e ) ; 39 u i . c o m b o B o x A t r i b u t o s−>s e t V i s i b l e ( f a l s e ) ; 40 u i . h o r i z o n t a l S p a c e r −>c h a n g e S i z e ( 0 , 0 , Q S i z e P o l i c y : : F i x e d , QSizePolicy : : Fixed ) ; 41 } 42 atributosDep . 43 f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o D e p = cbegin () ; 44 c i t A t r i b u t o D e p != a t r i b u t o s D e p . cend ( ) ; 45 c i t A t r i b u t o D e p ++) 46 { 47 c o n s t s t r i n g &a t r i b u t o D e p = ∗ c i t A t r i b u t o D e p ; 48 49 W i d g e t R e g r e s s a o L i n e a r S i m p l e s ∗ w i d g e t R e g r e s s a o L i n e a r S i m p l e s = new WidgetRegressaoLinearSimples ( atributoDep , todosAtributos , indicesValidosPorAtributo ) ; 50 w i d g e t s R e g r e s s a o L i n e a r S i m p l e s . push back ( widgetRegressaoLinearSimples ) ; 51 52 u i . s t a c k e d W i d g e t−>addWidget ( w i d g e t R e g r e s s a o L i n e a r S i m p l e s ) ; 53 } 54 55 u i . c o m b o B o x A t r i b u t o s−>s e t C u r r e n t I n d e x ( 0 ) ; 152 56 57 58 u i . s t a c k e d W i d g e t−>s e t C u r r e n t I n d e x ( 0 ) ; c o n n e c t ( u i . c o m b o B o x A t r i b u t o s , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( i n t ) ) , u i . s t a c k e d W i d g e t , SLOT( s e t C u r r e n t I n d e x ( i n t ) ) ) ; c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( r e j e c t ( ) ) ) ; c o n n e c t ( u i . p u s h B u t t o n G e r a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( g e r a r C l i c k ( ) ) ); 59 60 61 62 63 64 65 66 67 s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; } void { DialogEscolherRLS : : g e r a r C l i c k ( ) v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s > r e g r e s s o e s = v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s >() ; v e c t o r <s t r i n g > a t r i b u t o s I n d e p = v e c t o r <s t r i n g >() ; 68 69 70 for 71 72 73 74 cit = { const 75 76 WidgetRegressaoLinearSimples ∗cit ; ∗widgetRegressaoLinearSimples = r e g r e s s o e s . p u s h b a c k ( w i d g e t R e g r e s s a o L i n e a r S i m p l e s −> regressaoLinearSimples () ) ; a t r i b u t o s I n d e p . p u s h b a c k ( w i d g e t R e g r e s s a o L i n e a r S i m p l e s −> atributoIndep () ) ; 77 78 79 80 81 ( v e c t o r <W i d g e t R e g r e s s a o L i n e a r S i m p l e s ∗ > : : c o n s t i t e r a t o r widgetsRegressaoLinearSimples . cbegin () ; c i t != w i d g e t s R e g r e s s a o L i n e a r S i m p l e s . cend ( ) ; c i t ++) } emit regressoesEscolhidas ( atributosIndep , atributosDep , regressoes ) ; } Listagem B.30: dialog escolher RLS.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #i f n d e f DIALOG ESCOLHER RLS H #d e f i n e DIALOG ESCOLHER RLS H #i n c l u d e <QDialog> #i n c l u d e ” u i d i a l o g e s c o l h e r R L S . h ” #i n c l u d e ” w i d g e t r e g r e s s a o l i n e a r s i m p l e s . h” #i n c l u d e <v e c t o r > using namespace std ; c l a s s DialogEscolherRLS { Q OBJECT : public QDialog public : D i a l o g E s c o l h e r R L S ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s D e p , c o n s t v e c t o r < s t r i n g > &t o d o s A t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> & i n d i c e s V a l i d o s P o r A t r i b u t o , QWidget ∗ p a r e n t = 0 ) ; D i a l o g E s c o l h e r R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t v e c t o r <s t r i n g > & t o d o s A t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> & i n d i c e s V a l i d o s P o r A t r i b u t o , QWidget ∗ p a r e n t = 0 ) ; ˜ DialogEscolherRLS ( ) ; void i n i c i a l i z e ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s D e p , c o n s t > &t o d o s A t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> & indicesValidosPorAtributo ) ; private : Ui : : D i a l o g E s c o l h e r R L S u i ; v e c t o r <s t r i n g > atributosDep ; v e c t o r <W i d g e t R e g r e s s a o L i n e a r S i m p l e s ∗> v e c t o r <s t r i n g widgetsRegressaoLinearSimples ; private slots : void gerarClick () ; signals : void }; r e g r e s s o e s E s c o l h i d a s ( c o n s t v e c t o r <s t r i n g >&, c o n s t c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s >&) ; v e c t o r <s t r i n g >&, 153 36 #e n d i f // DIALOG ESCOLHER RLS H Listagem B.31: dialog escolher RLS.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g E s c o l h e r R L S </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g E s c o l h e r R L S ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >400</width> 10 <h e i g h t >300</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >E s c o l h e r R e g r e s s ã o L i n e a r S i m p l e s </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 17 <p r o p e r t y name=” l e f t M a r g i n ”> 18 <number>9</number> 19 </ p r o p e r t y > 20 <p r o p e r t y name=” t o p M a r g i n ”> 21 <number>9</number> 22 </ p r o p e r t y > 23 <p r o p e r t y name=” r i g h t M a r g i n ”> 24 <number>9</number> 25 </ p r o p e r t y > 26 <p r o p e r t y name=” bottomMargin ”> 27 <number>9</number> 28 </ p r o p e r t y > 29 <i t e m> 30 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 31 <i t e m> 32 <w i d g e t c l a s s =” QLabel ” name=” l a b e l A t r i b u t o ”> 33 <p r o p e r t y name=” t e x t ”> 34 <s t r i n g >A t r i b u t o : </ s t r i n g > 35 </ p r o p e r t y > 36 </w i d g e t > 37 </i t e m> 38 <i t e m> 39 <w i d g e t c l a s s =”QComboBox” name=” c o m b o B o x A t r i b u t o s ”/> 40 </i t e m> 41 <i t e m> 42 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 43 <p r o p e r t y name=” o r i e n t a t i o n ”> 44 <enum>Qt : : H o r i z o n t a l </enum> 45 </ p r o p e r t y > 46 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 47 <s i z e > 48 <width >40</width> 49 <h e i g h t >20</ h e i g h t > 50 </ s i z e > 51 </ p r o p e r t y > 52 </ s p a c e r > 53 </i t e m> 54 </ l a y o u t > 55 </i t e m> 56 <i t e m> 57 <w i d g e t c l a s s =” QStackedWidget ” name=” s t a c k e d W i d g e t ”/> 58 </i t e m> 59 <i t e m> 60 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> 61 <i t e m> 62 <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> 63 <p r o p e r t y name=” o r i e n t a t i o n ”> 64 <enum>Qt : : H o r i z o n t a l </enum> 65 </ p r o p e r t y > 66 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 67 <s i z e > 68 <width >40</width> 69 <h e i g h t >20</ h e i g h t > 70 </ s i z e > 71 </ p r o p e r t y > 72 </ s p a c e r > 73 </i t e m> 74 <i t e m> 75 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n G e r a r ”> 154 76 <p r o p e r t y name=” t e x t ”> 77 <s t r i n g >Gerar </ s t r i n g > 78 </ p r o p e r t y > 79 </w i d g e t > 80 </i t e m> 81 <i t e m> 82 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a n c e l a r ”> 83 <p r o p e r t y name=” t e x t ”> 84 <s t r i n g >C a n c e l a r </ s t r i n g > 85 </ p r o p e r t y > 86 </w i d g e t > 87 </i t e m> 88 </ l a y o u t > 89 </i t e m> 90 </ l a y o u t > 91 </w i d g e t > 92 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 93 < r e s o u r c e s /> 94 <c o n n e c t i o n s /> 95 </u i > Listagem B.32: dialog escolher RLS.ui 1 #i n c l u d e ” d i a l o g i m p o r t a c a o d a d o s . h ” 2 3 #i n c l u d e ” t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . h ” 4 5 #i n c l u d e <QDebug> 6 7 D i a l o g I m p o r t a c a o D a d o s : : D i a l o g I m p o r t a c a o D a d o s ( QWidget ∗ p a r e n t ) : 8 DialogProgresso ( parent ) , 9 p r o g r e s s (NULL) , 10 11 dadosColunasStr () , 12 atributos () , 13 tipos () , 14 diretorioArquivo () , 15 delimitador () , 16 widgetsCategoriasQual () , 17 18 widgetsIntervalosQuant () , 19 w i d g e t T a b e l a E d i t o r a T r a t a r I n t e r C a t e g (NULL) , 20 regsDescPorAtrib () , indicesOutliersPorAtrib () , 21 22 23 widgetsParamDiagCaixa ( ) , 24 widgetsParamZscore ( ) , 25 w i d g e t T a b e l a E d i t o r a T r a t a r O u t l i e r s (NULL) , 26 27 w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s (NULL) 28 { 29 ui . setupUi ( t h i s ) ; 30 31 c o n n e c t ( u i . pushButtonProximo , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( pushButtonProximoClick ( ) ) ) ; 32 c o n n e c t ( u i . pushButtonFim , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( fimClickPgTipificarAtributos () ) ) ; 33 c o n n e c t ( u i . p u s h B u t t o n A n t e r i o r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( pushButtonAnteriorClick () ) ) ; 34 35 setupPgArquivoDelimitador () ; 36 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x (PAGE ARQUIVO DELIMITADOR) ; 37 38 u i . p u s h B u t t o n A n t e r i o r −>s e t V i s i b l e ( f a l s e ) ; 39 u i . pushButtonFim−>s e t V i s i b l e ( f a l s e ) ; 40 41 u i . l i n e E d i t O u t r o D e l i m i t a d o r −>s e t V i s i b l e ( f a l s e ) ; 42 43 s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; 44 } 45 46 D i a l o g I m p o r t a c a o D a d o s : : ˜ D i a l o g I m p o r t a c a o D a d o s ( ) 47 { 48 i f ( progress ) 49 { 50 p r o g r e s s −>c l o s e ( ) ; 51 delete progress ; 52 p r o g r e s s = NULL ; 53 } 155 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 const void ∗ qDebug ( ) << a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } void { DialogImportacaoDados : : pushButtonProximoClick ( ) s e t C u r s o r ( Qt : : W a i t C u r s o r ) ; const int p a g i n a A t u a l = u i . s t a c k e d W i d g e t I n f o r m a c o e s −>c u r r e n t I n d e x ( ) ; switch ( paginaAtual ) { c a s e PAGE ARQUIVO DELIMITADOR : { proxClickPgArquivoDelimitador () ; } break ; c a s e PAGE SELECIONAR ATRIBUTOS : { proxClickPgSelecionarAtributos () ; } break ; c a s e PAGE TIPIFICAR ATRIBUTOS : { proxClickPgTipificarAtributos () ; } break ; c a s e PAGE INTERV CAR VALIDOS : { proxClickPgDefInterCatValidos () ; } break ; c a s e PAGE TRATAR VALORES INVALIDOS : { proxClickPgTratarForaIntervCat () ; } break ; c a s e PAGE SEL TEC OUTLIERS : { proxClickPgSelTecOutliers () ; } break ; c a s e PAGE TRATAR OUTLIERS : { proxClickPgTratarOutliers () ; } break ; c a s e PAGE TRATAR MISSINGS INVALIDOS : { proxClickPgTratarMissingsInvalidos () ; } break ; } s e t C u r s o r ( Qt : : A r r o w C u r s o r ) ; } void { DialogImportacaoDados : : pushButtonAnteriorClick ( ) s e t C u r s o r ( Qt : : W a i t C u r s o r ) ; const int p a g i n a A t u a l = u i . s t a c k e d W i d g e t I n f o r m a c o e s −>c u r r e n t I n d e x ( ) ; switch ( paginaAtual ) { c a s e PAGE SELECIONAR ATRIBUTOS : { voltarClickPgSelecionarAtributos () ; } break ; c a s e PAGE TIPIFICAR ATRIBUTOS : { voltarClickPgTipificarAtributos () ; } break ; c a s e PAGE INTERV CAR VALIDOS : { voltarClickPgDefInterCatValidos () ; } break ; c a s e PAGE TRATAR VALORES INVALIDOS : { 156 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 voltarClickPgTratarForaIntervCat () ; } break ; c a s e PAGE SEL TEC OUTLIERS : { voltarClickPgSelTecOutliers () ; } break ; c a s e PAGE TRATAR OUTLIERS : { voltarClickPgTratarOutliers () ; } break ; c a s e PAGE TRATAR MISSINGS INVALIDOS : { voltarClickPgTratarMissingsInvalidos () ; } break ; } s e t C u r s o r ( Qt : : A r r o w C u r s o r ) ; } void DialogImportacaoDados : : f i m C o l e t a E s t a t i s t i c a s ( const atributos ) v e c t o r <s t r i n g > ∗ { if { (! fim ) setupPgDefInterCatValidos () ; u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE INTERV CAR VALIDOS ) ; } p r o g r e s s −>d e l e t e L a t e r ( ) ; p r o g r e s s −>c l o s e ( ) ; delete atributos ; u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; if { ( fim ) accept () ; } } void { DialogImportacaoDados : : setupProgressBar ( ) p r o g r e s s = new Q P r o g r e s s D i a l o g ( ” ” , ” ” , 0 , 1 0 0 ) ; p r o g r e s s −>s e t W i n d o w T i t l e ( Q S t r i n g : : f r o m L a t i n 1 ( ” Aguarde ” ) ) ; p r o g r e s s −>s e t W i n d o w M o d a l i t y ( Qt : : A p p l i c a t i o n M o d a l ) ; p r o g r e s s −>s e t W i n d o w F l a g s ( p r o g r e s s −>w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint & ˜Qt : : W i n d o w C l o s e B u t t o n H i n t MSWindowsFixedSizeDialogHint ) ; p r o g r e s s −>s e t C a n c e l B u t t o n (NULL) ; p r o g r e s s −>s e t V a l u e ( 0 ) ; | Qt : : } void { DialogImportacaoDados : : onUpdateProgresso ( i n t ∗ porcentagem ) p r o g r e s s −>s e t V a l u e ( min ( ∗ p o r c e n t a g e m , 9 9 ) ) ; // e v i t a r c h e g a r 1 0 0 p o i s caso chegue e l a se auto d e s t r o i Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : E x c l u d e U s e r I n p u t E v e n t s ) ; delete porcentagem ; } void D i a l o g I m p o r t a c a o D a d o s : : s e t D a d o s ( v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <TipoDado AT> &t i p o s , c o n s t v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> & valoresColunas ) { atributos = atributos ; tipos = tipos ; valoresColunas = valoresColunas ; fim = f a l s e ; iniciarColetarEstatisticas () ; } void { DialogImportacaoDados : : i n i c i a r C o l e t a r E s t a t i s t i c a s ( ) setupProgressBar () ; p r o g r e s s −>s e t L a b e l T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” C o l e t a n d o e s t a t ı́ s t i c a s . . . ” 157 )); p r o g r e s s −>show ( ) ; Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : E x c l u d e U s e r I n p u t E v e n t s ) ; 211 212 213 214 215 216 217 T h r e a d W o r k e r C o l e t a r E s t a t i s t i c a s ∗ w o r k e r C o l e t a r E s t a t i s t i c a s = new ThreadWorkerColetarEstatisticas ( atributos , tipos , v a l o r e s C o l u n a s , t h i s ) ; // d e l e t a d o quando d e s t r o i t h r e a d C o n t r o l l e r ou quando t h r e a d C o n t r o l l e r s e t a um novo w o r k e r t h r e a d C o n t r o l l e r . setarWorker ( w o r k e r C o l e t a r E s t a t i s t i c a s ) ; threadController . iniciarExecucaoWorker ( t h i s ) ; } Listagem B.33: dialog importacao dados.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #i f n d e f DIALOG IMPORTACAO DADOS H #d e f i n e DIALOG IMPORTACAO DADOS H #i n c l u d e ” u i d i a l o g i m p o r t a c a o d a d o s . h” #i n c l u d e <Q F i l e D i a l o g > #i n c l u d e <QMessageBox> #i n c l u d e <Q P r o g r e s s D i a l o g > #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e ” widget ” widget ” widget ” widget ” widget #i n c l u d e #i n c l u d e ” t h r e a d c o n t r o l l e r d i a l o g . h” ” d i a l o g p r o g r e s s o . h” #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e #d e f i n e c a t e g o r i a s q u a l . h” i n t e r v a l o s q u a n t . h” t a b e l a e d i t o r a . h” p a r a m d i a g c a i x a . h” p a r a m z s c o r e . h” PAGE ARQUIVO DELIMITADOR 0 PAGE SELECIONAR ATRIBUTOS 1 PAGE TIPIFICAR ATRIBUTOS 2 PAGE INTERV CAR VALIDOS 3 PAGE TRATAR VALORES INVALIDOS 4 PAGE SEL TEC OUTLIERS 5 PAGE TRATAR OUTLIERS 6 PAGE TRATAR MISSINGS INVALIDOS 7 #d e f i n e COLUNA NOME ATRIBUTO 0 #d e f i n e COLUNA TIPO ATRIBUTO 1 using namespace std ; c l a s s DialogImportacaoDados { Q OBJECT : public DialogProgresso public : D i a l o g I m p o r t a c a o D a d o s ( QWidget ∗ p a r e n t ) ; ˜ DialogImportacaoDados ( ) ; void s e t D a d o s ( v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <TipoDado AT> & t i p o s , c o n s t v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> &v a l o r e s C o l u n a s ) ; private : Ui : : D i a l o g I m p o r t a c a o D a d o s ui ; QProgressDialog ∗ p r o g r e s s ; ThreadControllerDialog threadController ; void iniciarColetarEstatisticas () ; //PG 00 e 01 a r q u i v o e s e l e c i o n a r a t r i b u t o s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− v e c t o r <v e c t o r <s t r i n g >> d a d o s C o l u n a s S t r ; v e c t o r <s t r i n g > atributos ; string diretorioArquivo ; string delimitador ; bool char bool bool void // v e r i f i c a r E n t r a d a s ( s t r i n g &e r r o M s g ) delimitadorSelecionado () const ; carregarArquivo () ; temAtributoSelecionado () const ; filtrarAtributosNaoSelecionados () ; const ; −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 158 63 64 65 66 67 68 69 70 71 72 //PG 02 t i p i f i c a r −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− v e c t o r <TipoDado AT> tipos ; bool fim ; v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> valoresColunas ; void void void atualizaTiposAtributos () ; converterSetDados () ; c o l e t a r E s t a t i s t i c a s ( const valoresColunas ) ; v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> & // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 //PG 03 d e f i n i r i n t e r v a l o s / c a t e g o r i a s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− v e c t o r <W i d g e t C a t e g o r i a s Q u a l∗> widgetsCategoriasQual ; v e c t o r <W i d g e t I n t e r v a l o s Q u a n t∗> widgetsIntervalosQuant ; map<s t r i n g , v e c t o r <s i z e t >> r e g s D e s c P o r A t r i b ; // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− //PG 04 t r a t a r v a l o r e s f o r a do i n t e r v a l o / c a t e g o r i a −−−−−−−−−−−−−−−−−−−−−−−−−− WidgetTabelaEditora ∗ widgetTabelaEditoraTratarInterCateg ; // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− //PG 05 t e c n i c a s de o u t l i e r −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− v e c t o r <WidgetParamDiagCaixa∗> widgetsParamDiagCaixa ; v e c t o r <W i d g e t P a r a m Z s c o r e∗> widgetsParamZscore ; map<s t r i n g , v e c t o r <s i z e t >> indicesOutliersPorAtrib ; // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− //PG 06 t r a t a r o u t l i e r s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− WidgetTabelaEditora ∗ w i d g e tT a b e l a E d it o r a T r at a r O u t l ie r s ; // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− //PG 06 t r a t a r m i s s i n g s −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− WidgetTabelaEditora ∗ w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s ; // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− void void void void void void void void setupPgArquivoDelimitador () ; setupPgSelecionarAtributos () const ; setupPgTipificarAtributos () ; setupPgDefInterCatValidos () ; s e t u p P g T r a t a r F o r a I n t e r v C a t ( c o n s t v e c t o r <s i z e t > &t o d o s I n d i c e s F o r a ) ; setupPgSelTecOutliers () ; s e t u p P g T r a t a r O u t l i e r s ( c o n s t v e c t o r <s i z e t > &t o d o s I n d i c e s O u t l i e r s ) ; setupPgTratarMissingsInvalidos () ; void void void void void void void void proxClickPgArquivoDelimitador () ; proxClickPgSelecionarAtributos () ; proxClickPgTipificarAtributos () ; proxClickPgDefInterCatValidos () ; proxClickPgTratarForaIntervCat () ; proxClickPgSelTecOutliers () ; proxClickPgTratarOutliers () ; proxClickPgTratarMissingsInvalidos () ; void void void void void void void void voltarClickPgArquivoDelimitador () ; voltarClickPgSelecionarAtributos () ; voltarClickPgTipificarAtributos () ; voltarClickPgDefInterCatValidos () ; voltarClickPgTratarForaIntervCat () ; voltarClickPgSelTecOutliers () ; voltarClickPgTratarOutliers () ; voltarClickPgTratarMissingsInvalidos () ; 159 125 void setupProgressBar () ; 126 127 p r i v a t e s l o t s : 128 void pushButtonProximoClick ( ) ; 129 void pushButtonAnteriorClick () ; 130 131 void pushButtonAbrirArquivoClick () const ; 132 void radioButtonClick () const ; 133 void checkBoxSelecionarTodosClick () const ; 134 void pushButtonGerarRegistrosMissings () ; 135 void fimClickPgTipificarAtributos () ; 136 137 void removerForaClick () ; 138 void removerOutlierClick () ; 139 void removerMissInvClick () ; 140 141 p u b l i c s l o t s : 142 v o i d f i m C o l e t a E s t a t i s t i c a s ( c o n s t v e c t o r <s t r i n g > ∗ a t r i b u t o s ) ; 143 #i f n d e f TCC RODOLFO 144 v i r t u a l void onUpdateProgresso ( StatusThread ∗) {}; 145 #e n d i f 146 v i r t u a l void onUpdateProgresso ( i n t ∗ porcentagem ) ; 147 v o i d a p l i c a r P a r a m s D C T o d o s ( c o n s t d o u b l e f a t o r W I , c o n s t d o u b l e fatorWS ) ; 148 v o i d a p l i c a r P a r a m s Z S T o d o s ( c o n s t d o u b l e zMin , c o n s t d o u b l e zMax ) ; 149 } ; 150 151 #e n d i f Listagem B.34: dialog importacao dados.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g I m p o r t a c a o D a d o s </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g I m p o r t a c a o D a d o s ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >700</width> 10 <h e i g h t >512</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” minimumSize ”> 14 <s i z e > 15 <width >700</width> 16 <h e i g h t >512</ h e i g h t > 17 </ s i z e > 18 </ p r o p e r t y > 19 <p r o p e r t y name=” w i n d o w T i t l e ”> 20 <s t r i n g >I m p o r t a r Dados</ s t r i n g > 21 </ p r o p e r t y > 22 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 2 ”> 23 <i t e m> 24 <w i d g e t c l a s s =” QLabel ” name=” l a b e l T i t u l o ”> 25 <p r o p e r t y name=” s i z e P o l i c y ”> 26 < s i z e p o l i c y h s i z e t y p e=” Expanding ” v s i z e t y p e=” F i x e d ”> 27 <h o r s t r e t c h >0</ h o r s t r e t c h > 28 <v e r s t r e t c h >0</ v e r s t r e t c h > 29 </ s i z e p o l i c y > 30 </ p r o p e r t y > 31 <p r o p e r t y name=” f o n t ”> 32 <f o n t > 33 <p o i n t s i z e >11</ p o i n t s i z e > 34 <w e i g h t >75</ w e i g h t > 35 <b o l d>t r u e </b o l d> 36 </ f o n t > 37 </ p r o p e r t y > 38 <p r o p e r t y name=” t e x t ”> 39 <s t r i n g >A n á l i s e e Tratamento de Dados</ s t r i n g > 40 </ p r o p e r t y > 41 </w i d g e t > 42 </i t e m> 43 <i t e m> 44 <w i d g e t c l a s s =” QStackedWidget ” name=” s t a c k e d W i d g e t I n f o r m a c o e s ”> 45 <p r o p e r t y name=” s i z e P o l i c y ”> 46 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=”Minimum”> 47 <h o r s t r e t c h >0</ h o r s t r e t c h > 48 <v e r s t r e t c h >0</ v e r s t r e t c h > 49 </ s i z e p o l i c y > 160 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 </ p r o p e r t y > <p r o p e r t y name=” c u r r e n t I n d e x ”> <number>0</number> </ p r o p e r t y > <w i d g e t c l a s s =” QWidget ” name=” p a g e A r q u i v o D e l i m i t a d o r ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 1 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 5 ”> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x A r q u i v o ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >L o c a l </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 3 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> <i t e m> <w i d g e t c l a s s =” Q L i n e E d i t ” name=” l i n e E d i t A r q u i v o ”> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > <p r o p e r t y name=” r e a d O n l y ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n A b r i r A r q u i v o ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >A b r i r </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >D e l i m i t a d o r </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 4 ”> <i t e m> <l a y o u t c l a s s =” QGridLayout ” name=” g r i d L a y o u t ”> <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n P o n t o V i r g u l a ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Ponto e vı́ r g u l a </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” c h e c k e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> 161 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> <i t e m row=” 0 ” column=” 2 ”> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n T a b u l a c a o ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T a b u l a ç ã o </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n E s p a c o ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Espaço </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <s p a c e r name=” h o r i z o n t a l S p a c e r 3 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> <i t e m row=” 1 ” column=” 2 ”> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 3 ”> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n O u t r o ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Outro : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” Q L i n e E d i t ” name=” l i n e E d i t O u t r o D e l i m i t a d o r ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” maxLength ”> <number>1</number> </ p r o p e r t y > <p r o p e r t y name=” r e a d O n l y ”> <b o o l >f a l s e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> </ l a y o u t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” v e r t i c a l S p a c e r ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : V e r t i c a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >20</width> <h e i g h t >40</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > 162 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 </i t e m> <i t e m> <w i d g e t c l a s s =” QCheckBox ” name=” c h e c k B o x P r i m e i r a L i n h a N o m e ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >A p r i m e i r a l i n h a p o s s u i o nome d o s a t r i b u t o s </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” c h e c k e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” p a g e S e l e c i o n a r A t r i b u t o s ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 0 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x S e l e c i o n a r A t r i b u t o s ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >S e l e c i o n e o s a t r i b u t o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 7 ”> <i t e m> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 6 ”> <i t e m> <w i d g e t c l a s s =” Q L i s t W i d g e t ” name=” l i s t W i d g e t N o m e A t r i b u t o s ”/> </i t e m> <i t e m> <w i d g e t c l a s s =” QCheckBox ” name=” c h e c k B o x S e l e c i o n a r T o d o s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >S e l e c i o n a r t o d o s . </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” c h e c k e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” p a g e T i p i f i c a r A t r i b u t o s ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 9 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x E d i t a r T i p o s A t r i b u t o s ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >E s c o l h a o s t i p o s d o s a t r i b u t o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 8 ”> <i t e m> <w i d g e t c l a s s =” QTableWidget ” name=” t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s ”> <column> <p r o p e r t y name=” t e x t ”> 163 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 <s t r i n g >A t r i b u t o </ s t r i n g > </ p r o p e r t y > </column> <column> <p r o p e r t y name=” t e x t ”> <s t r i n g >Tipo </ s t r i n g > </ p r o p e r t y > </column> </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” p a g e D e f i n i r I n t e r C a t ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 4 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 5 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >D e f i n i r i n t e r v a l o s / c a t e g o r i a s v á l i d o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 2 ”> <i t e m> <w i d g e t c l a s s =” QTabWidget ” name=” t a b W i d g e t V a l o r e s V a l i d o s ”/> </i t e m> </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” p a g e T r a t a r F o r a I n t e r C a t ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 3 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 4 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >T r a t a r v a l o r e s f o r a do i n t e r v a l o / c a t e g o r i a </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 1 4 ”> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 1 1 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >Remover D e s t a c a d o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 1 3 ”> <i t e m> <w i d g e t c l a s s =”QComboBox” name=” comboBoxRemoverFora ”/> </i t e m> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” pushButtonRemoverFora ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Remover</ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > 164 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 7 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” QWidget ” name=” w i d g e t P g T r a t a r F o r a I n t e r C a t e g ” n a t i v e=” t r u e ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” Expanding ” v s i z e t y p e=” Expanding ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 6 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” p a g e T e c n i c a s O u t l i e r ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 5 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 2 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >D e t e c ç ã o de o u t l i e r s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 9 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 5 ”> <i t e m> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 7 ”> <i t e m> <w i d g e t c l a s s =” QCheckBox ” name=” c h e c k B o x D i a g r a m a C a i x a ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >115</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Diagrama de Caixa </ s t r i n g > </ p r o p e r t y > 165 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” v e r t i c a l S p a c e r 2 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : V e r t i c a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >20</width> <h e i g h t >40</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” QTabWidget ” name=” t a b W i d g e t P a r a m s D i a g C a i x a ”/> </i t e m> </ l a y o u t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 6 ”> <i t e m> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 8 ”> <i t e m> <w i d g e t c l a s s =” QCheckBox ” name=” c h e c k B o x Z S c o r e ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >115</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Z−S c o r e </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” v e r t i c a l S p a c e r 3 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : V e r t i c a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >20</width> <h e i g h t >40</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” QTabWidget ” name=” t a b W i d g e t P a r a m s Z S c o r e ”/> </i t e m> </ l a y o u t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” p a g e T r a t a r O u t l i e r s ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 1 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 3 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >T r a t a r o u t l i e r s </ s t r i n g > 166 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 7 ”> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 7 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >Remover D e s t a c a d o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 8 ”> <i t e m> <w i d g e t c l a s s =”QComboBox” name=” c o m b o B o x R e m o v e r O u t l i e r ”/> </i t e m> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n R e m o v e r O u t l i e r ” > <p r o p e r t y name=” t e x t ”> <s t r i n g >Remover</ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 8 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >S u b s t i t u i r D e s t a c a d o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 9 ”> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n S u b s t i t u i r O u t l i e r ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >S u b s t i t u i r </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 5 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” QWidget ” name=” w i d g e t P g T r a t a r O u t l i e r ” n a t i v e=” t r u e ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” Expanding ” v s i z e t y p e=” Expanding ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 0 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > 167 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” p a g e T r a t a r M i s s i n g s I n v a l i d o s ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 3 ”> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 6 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >T r a t a r m i s s i n g s ou i n v á l i d o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 5 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 4 ”> <i t e m> <w i d g e t c l a s s =” QCheckBox ” name=” c h e c k B o x U t i l i z a r V a r R e f ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >U t i l i z a r v a r i á v e l de r e f e r ê n c i a </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QComboBox” name=” c o m b o B o x V a r i a v e i s R e f e r e n c i a ”> <p r o p e r t y name=” e n a b l e d ”> <b o o l >f a l s e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n G e r a r R e g i s t r o s M i s s i n g s ”> <p r o p e r t y name=” e n a b l e d ”> <b o o l >f a l s e </b o o l > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >G e r a r r e g i s t r o s f a l t a n t e s </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 4 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 1 0 ”> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 9 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >Remover D e s t a c a d o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 1 1 ”> <i t e m> <w i d g e t c l a s s =”QComboBox” name=” comboBoxRemoverMissInv ”/> </i t e m> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n R e m o v e r M i s s I n v ” > <p r o p e r t y name=” t e x t ”> <s t r i n g >Remover</ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 1 0 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >S u b s t i t u i r D e s t a c a d o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 1 2 ”> 168 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n S u b s t i t u i r M i s s I n v ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >S u b s t i t u i r </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 6 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” QWidget ” name=” w i d g e t P g T r a t a r M i s s i n g s I n v a l i d o s ” n a t i v e=” t r u e ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” Expanding ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 4 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </w i d g e t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l S t a t u s ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >200</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >P r o n t o . </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > 169 779 </ s i z e > 780 </ p r o p e r t y > 781 </ s p a c e r > 782 </i t e m> 783 <i t e m> 784 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n A n t e r i o r ”> 785 <p r o p e r t y name=” t e x t ”> 786 <s t r i n g >A n t e r i o r </ s t r i n g > 787 </ p r o p e r t y > 788 </w i d g e t > 789 </i t e m> 790 <i t e m> 791 <w i d g e t c l a s s =” QPushButton ” name=” pushButtonFim ”> 792 <p r o p e r t y name=” t e x t ”> 793 <s t r i n g >Fim</ s t r i n g > 794 </ p r o p e r t y > 795 </w i d g e t > 796 </i t e m> 797 <i t e m> 798 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n P r o x i m o ”> 799 <p r o p e r t y name=” t e x t ”> 800 <s t r i n g >Próximo </ s t r i n g > 801 </ p r o p e r t y > 802 </w i d g e t > 803 </i t e m> 804 </ l a y o u t > 805 </i t e m> 806 </ l a y o u t > 807 </w i d g e t > 808 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 809 < r e s o u r c e s /> 810 <c o n n e c t i o n s /> 811 </u i > Listagem B.35: dialog importacao dados.ui 1 #i n c l u d e ” d i a l o g i m p o r t a c a o d a d o s . h ” 2 3 #i n c l u d e ” u t i l i d a d e s . h ” 4 5 void DialogImportacaoDados : : proxClickPgArquivoDelimitador ( ) 6 { 7 s t r i n g erroMsg ; 8 b o o l e n t r a d a s V a l i d a s = v e r i f i c a r E n t r a d a s ( erroMsg ) ; 9 10 i f ( entradasValidas ) 11 { 12 d i r e t o r i o A r q u i v o = u i . l i n e E d i t A r q u i v o −>t e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; 13 delimitador = delimitadorSelecionado () ; 14 15 i f ( carregarArquivo () ) 16 { 17 setupPgSelecionarAtributos () ; 18 u i . p u s h B u t t o n A n t e r i o r −>s e t V i s i b l e ( t r u e ) ; 19 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE SELECIONAR ATRIBUTOS) ; 20 } 21 else 22 { 23 QMessageBox : : c r i t i c a l (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” E r r o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” O c o r r e u um e r r o ao t e n t a r c a r r e g a r o arquivo ! ” ) ) ; 24 } 25 } 26 else 27 { 28 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : fromLatin1 ( erroMsg . c s t r ( ) ) ) ; 29 } 30 } 31 v o i d D i a l o g I m p o r t a c a o D a d o s : : v o l t a r C l i c k P g A r q u i v o D e l i m i t a d o r ( ) 32 { 33 34 } 35 v o i d D i a l o g I m p o r t a c a o D a d o s : : s e t u p P g A r q u i v o D e l i m i t a d o r ( ) 36 { 37 c o n n e c t ( u i . p u s h B u t t o n A b r i r A r q u i v o , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( pushButtonAbrirArquivoClick () ) ) ; 38 c o n n e c t ( u i . r a d i o B u t t o n P o n t o V i r g u l a , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( radioButtonClick () ) ) ; 170 39 c o n n e c t ( u i . r a d i o B u t t o n E s p a c o , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( radioButtonClick () ) ) ; c o n n e c t ( u i . r a d i o B u t t o n T a b u l a c a o , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( radioButtonClick () ) ) ; c o n n e c t ( u i . r a d i o B u t t o n O u t r o , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( radioButtonClick () ) ) ; 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 } bool { D i a l o g I m p o r t a c a o D a d o s : : v e r i f i c a r E n t r a d a s ( s t r i n g &e r r o M s g ) bool if { ( u i . l i n e E d i t A r q u i v o −>t e x t ( ) == ” ” ) e r r o M s g += ”Nenhum a r q u i v o entradasValidas = f a l s e ; S e l e c i o n a d o . \ n” ; } if ( u i . r a d i o B u t t o n O u t r o−>i s C h e c k e d ( ) && u i . l i n e E d i t O u t r o D e l i m i t a d o r −> t e x t ( ) == ” ” ) { e r r o M s g += ”Nenhum d e l i m i t a d o r entradasValidas = f a l s e ; inserido . ” ; } return } bool { entradasValidas ; DialogImportacaoDados : : carregarArquivo ( ) u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” C a r r e g a n d o u i . l a b e l S t a t u s −>r e p a i n t ( ) ; bool arquivo . . . ” ) ) ; sucesso = true ; dadosColunasStr . c l e a r () ; atributos . clear () ; v e c t o r <v e c t o r <s t r i n g >> dadosEmLinhas = v e c t o r <v e c t o r <s t r i n g >>() ; setupProgressBar () ; p r o g r e s s −>s e t L a b e l T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” C a r r e g a n d o a r q u i v o . . . ” ) ) ; p r o g r e s s −>show ( ) ; Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : E x c l u d e U s e r I n p u t E v e n t s ) ; //50% i f ( s u c e s s o && ! U t i l i d a d e s : : parseCVSDados ( d e l i m i t a d o r , d i r e t o r i o A r q u i v o , dadosEmLinhas , atributos , progress ) ) { sucesso = f a l s e ; } const s i z e t totalColunas = atributos . size () ; c o n s t s i z e t t o t a l L i n h a s = dadosEmLinhas . s i z e ( ) ; f o r ( s i z e t i = 0 ; i < t o t a l C o l u n a s ; i ++) { d a d o s C o l u n a s S t r . p u s h b a c k ( v e c t o r <s t r i n g >() ) ; d a d o s C o l u n a s S t r . back ( ) . r e s e r v e ( t o t a l L i n h a s ) ; } c o n s t i n t t a x a N o t i f i c a c a o = t o t a l L i n h a s <= 10 ? 10 s i z e t i = 0; : totalLinhas / 10; //50% f o r ( v e c t o r <v e c t o r <s t r i n g >>:: c o n s t i t e r a t o r c i t L i n h a = dadosEmLinhas . cbegin () ; c i t L i n h a != dadosEmLinhas . c e n d ( ) ; c i t L i n h a ++, i ++) { s i z e t coluna = 0; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t C o l u n a = c i t L i n h a −>c b e g i n ( ) ; c i t C o l u n a != c i t L i n h a −>c e n d ( ) ; c i t C o l u n a ++, c o l u n a ++) { dadosColunasStr [ coluna ] . push back (∗ c i t C o l u n a ) ; } if { ( ( i % t a x a N o t i f i c a c a o ) == 0 ) p r o g r e s s −>s e t V a l u e ( min ( ( i n t ) ( i ∗ 1 . 0 / t o t a l L i n h a s 99) ) ; Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : ExcludeUserInputEvents ) ; 111 112 const entradasValidas = true ; } ∗ 50 + 5 0 ) , 171 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 } u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; p r o g r e s s −>d e l e t e L a t e r ( ) ; p r o g r e s s −>c l o s e ( ) ; return } void { sucesso ; DialogImportacaoDados : : pushButtonAbrirArquivoClick ( ) const Q S t r i n g f i l e N a m e = Q F i l e D i a l o g : : g e t O p e n F i l e N a m e (NULL, Q S t r i n g : : fromLatin1 ( ” S e l e c i o n e o arquivo ” ) , ”” , QString : : fromLatin1 ( ” A l l f i l e s (∗.∗) ”) ) ; i f ( ! f i l e N a m e . isEmpty ( ) ) { u i . l i n e E d i t A r q u i v o −>s e t T e x t ( f i l e N a m e ) ; } } void { DialogImportacaoDados : : radioButtonClick ( ) const u i . l i n e E d i t O u t r o D e l i m i t a d o r −>s e t V i s i b l e ( u i . r a d i o B u t t o n O u t r o−>i s C h e c k e d () ) ; } char { DialogImportacaoDados : : d e l i m i t a d o r S e l e c i o n a d o ( ) if { const ( u i . r a d i o B u t t o n P o n t o V i r g u l a −>i s C h e c k e d ( ) ) return } else { if return } else { if ’ ’; ( u i . r a d i o B u t t o n T a b u l a c a o −>i s C h e c k e d ( ) ) return } else { ’; ’; ( u i . r a d i o B u t t o n E s p a c o−>i s C h e c k e d ( ) ) /∗ i f return ’\t ’ ; ( u i . r a d i o B u t t o n O u t r o−>i s C h e c k e d ( ) ) ∗/ u i . l i n e E d i t O u t r o D e l i m i t a d o r −>t e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) [ 0 ] ; } } Listagem B.36: dialog importacao dados pg 00 arquivo.cpp 1 #i n c l u d e ” d i a l o g i m p o r t a c a o d a d o s . h ” 2 3 void DialogImportacaoDados : : p r o x C l i c k P g S e l e c i o n a r A t r i b u t o s ( ) 4 { 5 i f ( temAtributoSelecionado () ) 6 { 7 filtrarAtributosNaoSelecionados () ; 8 setupPgTipificarAtributos () ; 9 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE TIPIFICAR ATRIBUTOS ) ; 10 } 11 else 12 { 13 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Não há a t r i b u t o s s e l e c i o n a d o s ” ) ) ; 14 } 15 16 } 17 v o i d D i a l o g I m p o r t a c a o D a d o s : : v o l t a r C l i c k P g S e l e c i o n a r A t r i b u t o s ( ) 18 { 19 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x (PAGE ARQUIVO DELIMITADOR) ; 20 u i . p u s h B u t t o n A n t e r i o r −>s e t V i s i b l e ( f a l s e ) ; 21 } 22 v o i d D i a l o g I m p o r t a c a o D a d o s : : s e t u p P g S e l e c i o n a r A t r i b u t o s ( ) c o n s t 23 { 24 c o n n e c t ( u i . c h e c k B o x S e l e c i o n a r T o d o s , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( checkBoxSelecionarTodosClick () ) ) ; 25 26 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r e e n c h e n d o a t a b e l a com atributos . . . ”) ) ; 27 u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 28 172 u i . l i s t W i d g e t N o m e A t r i b u t o s −>c l e a r ( ) ; 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 QListWidgetItem ∗ item ; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . cbegin () ; c i t A t r i b u t o != a t r i b u t o s . cend ( ) ; c i t A t r i b u t o ++) { i t e m = new Q L i s t W i d g e t I t e m ( ) ; i t e m−>s e t D a t a ( Qt : : D i s p l a y R o l e , Q S t r i n g : : f r o m L a t i n 1 ( c i t A t r i b u t o −> c str () ) ) ; i t e m−>s e t D a t a ( Qt : : C h e c k S t a t e R o l e , Qt : : Checked ) ; u i . l i s t W i d g e t N o m e A t r i b u t o s −>addItem ( i t e m ) ; } u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; } bool { const for { const int ( int count = i = 0; u i . l i s t W i d g e t N o m e A t r i b u t o s −>c o u n t ( ) ; i < count ; i ++) i t e m = u i . l i s t W i d g e t N o m e A t r i b u t o s −>i t e m ( i ) ; i f ( i t e m−>c h e c k S t a t e ( ) == Qt : : Checked ) { return true ; } } return } void { false ; DialogImportacaoDados : : f i l t r a r A t r i b u t o s N a o S e l e c i o n a d o s ( ) u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n a n d o . . . ”) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 66 67 68 69 os atributos v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . cbegin () ; v e c t o r <v e c t o r <s t r i n g >>:: c o n s t i t e r a t o r c i t C o l u n a = dadosColunasStr . cbegin () ; 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 DialogImportacaoDados : : temAtributoSelecionado ( ) QListWidgetItem ∗ item ; const for { int ( int if c o u n t = u i . l i s t W i d g e t N o m e A t r i b u t o s −>c o u n t ( ) ; i = 0; i < count ; i ++) ( u i . l i s t W i d g e t N o m e A t r i b u t o s −>i t e m ( i )−>c h e c k S t a t e ( ) Checked ) != Qt : : { atributos . erase ( citAtributo ) ; citAtributo = citColuna = dadosColunasStr . erase ( citColuna ) ; } else { ++c i t A t r i b u t o ; ++c i t C o l u n a ; } } u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; } void { DialogImportacaoDados : : checkBoxSelecionarTodosClick ( ) Qt : : C h e c k S t a t e const for { int ( int const s t a t e = u i . c h e c k B o x S e l e c i o n a r T o d o s −>c h e c k S t a t e ( ) ; c o u n t = u i . l i s t W i d g e t N o m e A t r i b u t o s −>c o u n t ( ) ; i = 0; i < count ; i ++) u i . l i s t W i d g e t N o m e A t r i b u t o s −>i t e m ( i )−>s e t C h e c k S t a t e ( s t a t e ) ; } } Listagem B.37: dialog importacao dados pg 01 selecionar atribs.cpp 173 1 #i n c l u d e ” d i a l o g i m p o r t a c a o d a d o s . h ” 2 3 void DialogImportacaoDados : : p r o x C l i c k P g T i p i f i c a r A t r i b u t o s ( ) 4 { 5 c o n s t i n t c o u n t = u i . t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s −>rowCount ( ) ; 6 7 f o r ( s i z e t i = 0 ; i < c o u n t ; i ++) 8 { 9 QComboBox ∗combo = ( QComboBox ∗ ) u i . t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s −>c e l l W i d g e t ( i , COLUNA TIPO ATRIBUTO) ; 10 11 c o n s t Q S t r i n g a t u a l = combo−>c u r r e n t T e x t ( ) ; 12 13 i f ( a t u a l == Q S t r i n g : : f r o m L a t i n 1 ( ” ” ) ) 14 { 15 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” A l g u n s a t r i b u t o s não f o r a m tipificados ! ”) ) ; 16 return ; 17 } 18 } 19 20 atualizaTiposAtributos () ; 21 22 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Adequando d a d o s . . . ” ) ) ; 23 u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 24 25 converterSetDados () ; 26 27 u i . pushButtonFim−>s e t V i s i b l e ( f a l s e ) ; 28 29 // e m i t d a d o s C a r r e g a d o s ( d a d o s , atributos , tipos ) ; 30 // a c c e p t ( ) ; 31 } 32 v o i d D i a l o g I m p o r t a c a o D a d o s : : v o l t a r C l i c k P g T i p i f i c a r A t r i b u t o s ( ) 33 { 34 i f ( carregarArquivo () ) 35 { 36 setupPgSelecionarAtributos () ; 37 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE SELECIONAR ATRIBUTOS) ; 38 } 39 else 40 { 41 QMessageBox : : c r i t i c a l (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” E r r o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” O c o r r e u um e r r o ao t e n t a r c a r r e g a r o a r q u i v o ! ” ) ) ; 42 } 43 } 44 v o i d D i a l o g I m p o r t a c a o D a d o s : : f i m C l i c k P g T i p i f i c a r A t r i b u t o s ( ) 45 { 46 fim = true ; 47 proxClickPgTipificarAtributos () ; 48 } 49 v o i d D i a l o g I m p o r t a c a o D a d o s : : s e t u p P g T i p i f i c a r A t r i b u t o s ( ) 50 { fim = f a l s e ; 51 52 53 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r e e n c h e n d o a l i s t a com t i p o s dos a t r i b u t o s . . . ” ) ) ; 54 u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 55 56 QStringList tiposList = QStringList () ; 57 t i p o s L i s t . append ( Q S t r i n g : : f r o m L a t i n 1 ( ” ” ) ) ; 58 t i p o s L i s t . append ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a l i t a t i v o ” ) ) ; 59 t i p o s L i s t . append ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o C o n tı́ n u o ” ) ) ; 60 t i p o s L i s t . append ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o D i s c r e t o ” ) ) ; 61 62 /∗ t i p o s . c l e a r ( ) ; 63 for ( s i z e t i = 0; i < a t r i b u t o s . s i z e ( ) ; i ++) 64 { 65 t i p o s . p u s h b a c k (QUANT CONTINUO) ; // d e f a u l t 66 } ∗/ 67 68 const s i z e t count = atributos . size () ; 69 70 u i . t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s −>setRowCount ( c o u n t ) ; 71 72 f o r ( s i z e t i = 0 ; i < c o u n t ; i ++) 73 { 74 QTableWidgetItem ∗ i t e m = new QTableWidgetItem ( Q S t r i n g : : f r o m L a t i n 1 ( atributos [ i ] . c str () ) ) ; 75 174 u i . t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s −>s e t I t e m ( i , COLUNA NOME ATRIBUTO , item ) ; 76 77 78 QComboBox ∗combo = new QComboBox ( u i . t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s ); 79 80 81 82 combo−>a d d I t e m s ( t i p o s L i s t ) ; u i . t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s −>s e t C e l l W i d g e t ( i , COLUNA TIPO ATRIBUTO , combo ) ; 83 84 85 86 87 88 89 90 if { (i < 91 92 93 94 95 96 c a s e QUANT CONTINUO : { combo−>s e t C u r r e n t I n d e x ( combo−>f i n d T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o C o n tı́ n u o ” ) ) ) ; } break ; c a s e QUANT DISCRETO : { combo−>s e t C u r r e n t I n d e x ( combo−>f i n d T e x t ( Q S t r i n g : : fromLatin1 ( ” Quantitativo Discreto ” ) ) ) ; } break ; default : break ; } 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 tipos . size () ) switch ( t i p o s [ i ] ) { c a s e QUALITATIVO : { combo−>s e t C u r r e n t I n d e x ( combo−>f i n d T e x t ( Q S t r i n g : : fromLatin1 ( ” Q ua l i ta t i vo ” ) ) ) ; } break ; } else { combo−>s e t C u r r e n t I n d e x ( combo−>f i n d T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” ” ) ) ); } u i . t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s −>r e s i z e C o l u m n s T o C o n t e n t s ( ) ; } u i . pushButtonFim−>s e t V i s i b l e ( t r u e ) ; u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; } void { DialogImportacaoDados : : a t u a l i z a T i p o s A t r i b u t o s ( ) u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” S a l v a n d o )); u i . l a b e l S t a t u s −>r e p a i n t ( ) ; as a l t e r a ç õ e s . . . ” tipos . clear () ; const for { int c o u n t = u i . t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s −>rowCount ( ) ; ( size t i = 0; i < count ; i ++) TipoDado AT t i p o ; QComboBox ∗combo = ( QComboBox ∗ ) u i . t a b l e W i d g e t E d i t a r T i p o s A t r i b u t o s −>c e l l W i d g e t ( i , COLUNA TIPO ATRIBUTO) ; QString if { a t u a l = combo−>c u r r e n t T e x t ( ) ; ( a t u a l == Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a l i t a t i v o ” ) ) t i p o = QUALITATIVO ; } else { if ( a t u a l == Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o C o n tı́ n u o ” ) ) t i p o = QUANT CONTINUO ; } else { if ( a t u a l == Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o t i p o = QUANT DISCRETO ; } Discreto ”) ) 175 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 t i p o s . push back ( t i p o ) ; } u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; } void { DialogImportacaoDados : : converterSetDados ( ) setupProgressBar () ; p r o g r e s s −>s e t L a b e l T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” C o n v e r t e n d o d a d o s . . . ” ) ) ; p r o g r e s s −>show ( ) ; Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : E x c l u d e U s e r I n p u t E v e n t s ) ; v a l o r e s C o l u n a s = v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >>() ; TabelaDeRegistros : : dadosStringToValoresBases ( dadosColunasStr , valoresColunas , progress ) ; tipos , p r o g r e s s −>d e l e t e L a t e r ( ) ; p r o g r e s s −>c l o s e ( ) ; iniciarColetarEstatisticas () ; } Listagem B.38: dialog importacao dados pg 02 tipificar.cpp 1 #i n c l u d e ” d i a l o g i m p o r t a c a o d a d o s . h ” 2 3 void DialogImportacaoDados : : proxClickPgDefInterCatValidos ( ) 4 { 5 bool sucesso = true ; 6 7 // i n f o r m a ç õ e s d o s a t r i b u t o s q u a n t 8 v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = v e c t o r <s t r i n g >() ; 9 v e c t o r <v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >> i n t e r C a d a A t r i b Q u a n t = v e c t o r <v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >>() ; 10 v e c t o r <b o o l > missingsQuantTmb = v e c t o r <b o o l >() ; 11 v e c t o r <b o o l > i n v a l i d o s Q u a n t T m b = v e c t o r <b o o l >() ; 12 13 // i n f o r m a ç o e s d o s a t r i b u t o s q u a l 14 v e c t o r <s t r i n g > a t r i b u t o s Q u a l = v e c t o r <s t r i n g >() ; 15 v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> v a l C a d a A t r i b Q u a l = v e c t o r <v e c t o r < V a l o r B a s e ∗ c o n s t >>() ; 16 v e c t o r <b o o l > m i s s i n g s Q u a l T m b = v e c t o r <b o o l >() ; 17 v e c t o r <b o o l > i n v a l i d o s Q u a l T m b = v e c t o r <b o o l >() ; 18 19 // i n f o r m a ç õ e s t o d o s a t r i b u t o s 20 v e c t o r <s t r i n g > t o d o s A t r i b u t o s = v e c t o r <s t r i n g >() ; 21 v e c t o r <b o o l > t e m R e g P o r A t r i b = v e c t o r <b o o l >() ; 22 v e c t o r <s t r i n g > p r o b l e m a s P o r A t r i b = v e c t o r <s t r i n g >() ; 23 r e g s D e s c P o r A t r i b = map<s t r i n g , v e c t o r <s i z e t >>() ; 24 25 s t r i n g mensagemErro = ”Não f o i p o s sı́ v e l a v a n ç a r p e l o s p r o b l e m a s com o s a t r i b u t o s : \ n\n ” ; 26 b o o l algumTemProblema = f a l s e ; 27 28 v e c t o r <s i z e t > r e g i s t r o s C o s i d e r a d o s = v e c t o r <s i z e t >() ; 29 v e c t o r <s i z e t > r e g i s t r o s D e s c o s i d e r a d o s = v e c t o r <s i z e t >() ; 30 31 f o r ( v e c t o r <W i d g e t I n t e r v a l o s Q u a n t ∗ > : : c o n s t i t e r a t o r c i t W i d g e t = widgetsIntervalosQuant . cbegin () ; 32 c i t W i d g e t != w i d g e t s I n t e r v a l o s Q u a n t . cend ( ) ; 33 c i t W i d g e t ++) 34 { 35 WidgetIntervalosQuant ∗ widgetIntervalosQuant = ∗ citWidget ; 36 37 c o n s t s t r i n g a t r i b u t o = w i d g e t I n t e r v a l o s Q u a n t −>a t r i b u t o A t u a l ( ) ; 38 39 v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > i n t e r v a l o s = v e c t o r < T a b e l a D e R e g i s t r o s : : I n t e r v a l o >() ; 40 41 try 42 { 43 w i d g e t I n t e r v a l o s Q u a n t −>g e r a r I n t e r v a l o s ( i n t e r v a l o s ) ; 44 } 45 c a t c h ( s t d : : e x c e p t i o n &e ) 46 { 47 c o n s t s t r i n g msg = a t r i b u t o +” : ” +e . what ( ) ; 48 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( msg . c s t r ( ) ) ) ; 176 49 50 51 52 53 54 55 56 57 58 59 60 goto atributosQuant . push back ( a t r i b u t o ) ; interCadaAtribQuant . push back ( i n t e r v a l o s ) ; todosAtributos . push back ( a t r i b u t o ) ; v e c t o r <s i z e t > r e g i s t r o s C o n s = v e c t o r <s i z e t >() ; v e c t o r <s i z e t > r e g i s t r o s D e s c = v e c t o r <s i z e t >() ; s t r i n g problema = ”” ; t e m R e g P o r A t r i b . p u s h b a c k ( w i d g e t I n t e r v a l o s Q u a n t −>h a R e g i s t r o ( p r o b l e m a , registrosCons ) ) ; problemasPorAtrib . push back ( problema ) ; 61 62 63 T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosCons , registrosDesc ) ; regsDescPorAtrib [ atributo ] = registrosDesc ; 64 65 66 missingsQuantTmb . p u s h b a c k ( w i d g e t I n t e r v a l o s Q u a n t −> considerarMissings () ) ; i n v a l i d o s Q u a n t T m b . p u s h b a c k ( w i d g e t I n t e r v a l o s Q u a n t −> considerarInvalidos () ) ; 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 } for citWidget = WidgetCategoriasQual ∗ widgetCategoriasQual = ∗ citWidget ; const string a t r i b u t o = w i d g e t C a t e g o r i a s Q u a l −>a t r i b u t o A t u a l ( ) ; v e c t o r <V a l o r B a s e ∗ c o n s t > v a l o r e s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; w i d g e t C a t e g o r i a s Q u a l −>o b t e r S e l e c i o n a d o s ( v a l o r e s ) ; atributosQual . push back ( a t r i b u t o ) ; valCadaAtribQual . push back ( v a l o r e s ) ; todosAtributos . push back ( a t r i b u t o ) ; v e c t o r <s i z e t > r e g i s t r o s V a l i d o s = v e c t o r <s i z e t >() ; v e c t o r <s i z e t > r e g i s t r o s I n v a l i d o s = v e c t o r <s i z e t >() ; s t r i n g problema = ”” ; t e m R e g P o r A t r i b . p u s h b a c k ( w i d g e t C a t e g o r i a s Q u a l −>h a R e g i s t r o s ( p r o b l e m a , registrosValidos ) ) ; problemasPorAtrib . push back ( problema ) ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosValidos , registrosInvalidos ) ; regsDescPorAtrib [ atributo ] = r e g i s t r o s I n v a l i d o s ; 93 94 95 117 118 119 120 ( v e c t o r <W i d g e t C a t e g o r i a s Q u a l ∗ > : : c o n s t i t e r a t o r widgetsCategoriasQual . cbegin () ; c i t W i d g e t != w i d g e t s C a t e g o r i a s Q u a l . cend ( ) ; c i t W i d g e t ++) { 90 91 92 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 fim ; } m i s s i n g s Q u a l T m b . p u s h b a c k ( w i d g e t C a t e g o r i a s Q u a l −>c o n s i d e r a r M i s s i n g s () ) ; invalidosQualTmb . push back ( f a l s e ) ; } for { ( size t const if { i = 0; i < todosAtributos . s i z e () ; i ++) b o o l &t e m R e g i s t r o = t e m R e g P o r A t r i b [ i ] ; ( ! temRegistro ) const const s t r i n g &a t r i b u t o = t o d o s A t r i b u t o s [ i ] ; s t r i n g &p r o b l e m a = p r o b l e m a s P o r A t r i b [ i ] ; mensagemErro += ” \ t − ” +a t r i b u t o +” : ” +p r o b l e m a +” \n ” ; algumTemProblema = t r u e ; } } if { ( algumTemProblema ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( mensagemErro . c s t r ( ) ) ) ; goto fim ; QString : : } T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i d e n t i f i c a r R e g i s t r o s M u l t i A t r i b u t o s ( a t r i b u t o s Q u a n t , i n t e r C a d a A t r i b Q u a n t , missingsQuantTmb , 177 invalidosQuantTmb , a t r i b u t o s Q u a l , valCadaAtribQual , missingsQualTmb , i n v a l i d o s Q u a l T m b , r e g i s t r o s C o s i d e r a d o s ) ; 121 122 123 124 if { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”A c o m b i n a ç ã o de i n t e r v a l o s / c a t e g o r i a s r e s u l t a em nenhum r e g i s t r o ! ” ) ) ; goto fim ; 125 126 127 128 } T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosCosiderados , registrosDescosiderados ) ; 129 130 131 132 133 if { } else { QMessageBox : : i n f o r m a t i o n (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” I n f o r m a ç ã o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” Todos a s r e g i s t r o s p e r t e n c e m a o s intervalos / categorias definidos . ”) ) ; p r o x C l i c k P g T r a t a r F o r a I n t e r v C a t ( ) ; // p u l a n d o a p a g i n a de t r a t a r intervalos 138 } 139 140 141 142 fim : f o r ( v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >>:: c o n s t i t e r a t o r c i t 1 = valCadaAtribQual . cbegin ( ) ; c i t 1 != v a l C a d a A t r i b Q u a l . c b e g i n ( ) ; c i t 1 ++) { v e c t o r <V a l o r B a s e ∗ c o n s t > v a l A t r i b Q u a l = ∗ c i t 1 ; f o r ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r c i t 2 = v a l A t r i b Q u a l . cbegin () ; c i t 2 != v a l A t r i b Q u a l . c b e g i n ( ) ; c i t 2 ++) { delete ∗cit2 ; } } 143 144 145 146 147 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 ( ! r e g i s t r o s D e s c o s i d e r a d o s . empty ( ) ) setupPgTratarForaIntervCat ( r e g i s t r o s D e s c o s i d e r a d o s ) ; u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE TRATAR VALORES INVALIDOS) ; 134 135 136 137 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 ( r e g i s t r o s C o s i d e r a d o s . empty ( ) ) } void { DialogImportacaoDados : : v o l t a r C l i c k P g D e f I n t e r C a t V a l i d o s ( ) u i . t a b W i d g e t V a l o r e s V a l i d o s −>c l e a r ( ) ; widgetsCategoriasQual . clear () ; widgetsIntervalosQuant . clear () ; u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE TIPIFICAR ATRIBUTOS ) ; } void { DialogImportacaoDados : : setupPgDefInterCatValidos ( ) const v e c t o r <s t r i n g > &a t r i b u t o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ; size t for iTab = 0 ; ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . c b e g i n ( ) ; c i t A t r i b u t o != a t r i b u t o s . c e n d ( ) ; c i t A t r i b u t o ++, iTab++) { const if { s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>ehQuant ( a t r i b u t o ) ) W i d g e t I n t e r v a l o s Q u a n t ∗ w i d g e t I n t e r v a l o s Q u a n t = new WidgetIntervalosQuant ( atributo , ui . tabWidgetValoresValidos ); w i d g e t I n t e r v a l o s Q u a n t −>s e t V i s i b i l i d a d e C o m b o A t r i b u t o s ( f a l s e ) ; w i d g e t I n t e r v a l o s Q u a n t −>s e t A t r i b u t o A t u a l C o m b o B o x A t r i b u t o s ( atributo ) ; w i d g e t I n t e r v a l o s Q u a n t −>c h e c k C o n s i d e r a r I n v a l i d o s ( t r u e ) ; w i d g e t I n t e r v a l o s Q u a n t −>c h e c k C o n s i d e r a r M i s s i n g s ( t r u e ) ; w i d g e t s I n t e r v a l o s Q u a n t . push back ( widgetIntervalosQuant ) ; u i . t a b W i d g e t V a l o r e s V a l i d o s −>i n s e r t T a b ( iTab , widgetIntervalosQuant , QString : : fromLatin1 ( a t r i b u t o . c s t r () ) ) ; 178 186 187 } else 188 189 { W i d g e t C a t e g o r i a s Q u a l ∗ w i d g e t C a t e g o r i a s Q u a l = new WidgetCategoriasQual ( atributo , ui . tabWidgetValoresValidos ) ; w i d g e t C a t e g o r i a s Q u a l −>s e t V i s i b i l i d a d e C o m b o A t r i b u t o s ( f a l s e ) ; w i d g e t C a t e g o r i a s Q u a l −>s e t A t r i b u t o A t u a l C o m b o B o x A t r i b u t o s ( atributo ) ; w i d g e t C a t e g o r i a s Q u a l −>m a r c a r T o d o s ( ) ; w i d g e t C a t e g o r i a s Q u a l −>c h e c k C o n s i d e r a r M i s s i n g s ( t r u e ) ; 190 191 192 193 194 195 196 197 198 199 200 i f ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( atributo ) ) widgetsCategoriasQual . push back ( widgetCategoriasQual ) ; u i . t a b W i d g e t V a l o r e s V a l i d o s −>i n s e r t T a b ( iTab , widgetCategoriasQual , QString : : fromLatin1 ( a t r i b u t o . c s t r ( ) )); } } } Listagem B.39: dialog importacao dados pg 03 def interv cat.cpp 1 #i n c l u d e ” d i a l o g i m p o r t a c a o d a d o s . h ” 2 3 #i n c l u d e ” p o p u l a d o r . h ” 4 5 void DialogImportacaoDados : : proxClickPgTratarForaIntervCat ( ) 6 { 7 setupPgSelTecOutliers () ; 8 9 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE SEL TEC OUTLIERS ) ; 10 } 11 v o i d D i a l o g I m p o r t a c a o D a d o s : : v o l t a r C l i c k P g T r a t a r F o r a I n t e r v C a t ( ) 12 { 13 u i . w i d g e t P g T r a t a r F o r a I n t e r C a t e g −>l a y o u t ( )−>removeWidget ( widgetTabelaEditoraTratarInterCateg ) ; 14 i f ( widgetTabelaEditoraTratarInterCateg ) { delete widgetTabelaEditoraTratarInterCateg ;} 15 w i d g e t T a b e l a E d i t o r a T r a t a r I n t e r C a t e g = NULL ; 16 17 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE INTERV CAR VALIDOS ) ; 18 } 19 v o i d D i a l o g I m p o r t a c a o D a d o s : : s e t u p P g T r a t a r F o r a I n t e r v C a t ( c o n s t v e c t o r <s i z e t > &t o d o s I n d i c e s F o r a ) 20 { w i d g e t T a b e l a E d i t o r a T r a t a r I n t e r C a t e g = new W i d g e t T a b e l a E d i t o r a ( 21 todosIndicesFora , ui . widgetPgTratarForaInterCateg ) ; 22 w i d g e t T a b e l a E d i t o r a T r a t a r I n t e r C a t e g −>d e s t a c a r ( r e g s D e s c P o r A t r i b ) ; w i d g e t T a b e l a E d i t o r a T r a t a r I n t e r C a t e g −>s e t B a r r a M e n u V i s i v e l ( f a l s e ) ; 23 24 u i . w i d g e t P g T r a t a r F o r a I n t e r C a t e g −>l a y o u t ( )−>addWidget ( widgetTabelaEditoraTratarInterCateg ) ; 25 26 v e c t o r <s t r i n g > strsComboBoxRemover = v e c t o r <s t r i n g >() ; 27 strsComboBoxRemover . p u s h b a c k ( ” S e l e c i o n a d o ” ) ; 28 strsComboBoxRemover . p u s h b a c k ( ” Todos d e s t a c a d o s na c o l u n a ” ) ; 29 strsComboBoxRemover . p u s h b a c k ( ” Todos ” ) ; 30 31 P o p u l a d o r : : populeComboBox ( u i . comboBoxRemoverFora , strsComboBoxRemover ) ; 32 33 c o n n e c t ( u i . pushButtonRemoverFora , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( removerForaClick ( ) ) ) ; 34 } 35 36 v o i d D i a l o g I m p o r t a c a o D a d o s : : r e m o v e r F o r a C l i c k ( ) 37 { 38 const int selecionadoIdx = 0; 39 const int todosDestacadosIdx = 1; 40 const int todosIdx = 2; 41 42 i n t a t u a l I d x = u i . comboBoxRemoverFora−>c u r r e n t I n d e x ( ) ; 43 44 switch ( atualIdx ) 45 { 46 case selecionadoIdx : 47 { 48 w i d g e t T a b e l a E d i t o r a T r a t a r I n t e r C a t e g −>r e m o v e r L i n h a ( ) ; 49 } 179 50 51 52 53 54 55 56 57 58 59 60 61 62 case break ; todosDestacadosIdx : { w i d g e t T a b e l a E d i t o r a T r a t a r I n t e r C a t e g −> removerLinhasDestacadasDoAtributo ( ) ; } break ; case todosIdx : { w i d g e t T a b e l a E d i t o r a T r a t a r I n t e r C a t e g −>r e m o v e r T o d a s L i n h a s ( ) ; } break ; } } Listagem B.40: dialog importacao dados pg 04 tratar fora interv cat.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #i n c l u d e ” d i a l o g i m p o r t a c a o d a d o s . h” #i n c l u d e #i n c l u d e ” t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . h” ” c o l e t o r e s t a t i s t i c a s . h” #i n c l u d e <s e t > void { DialogImportacaoDados : : proxClickPgSelTecOutliers ( ) const const if { bool bool u s a r D i a g r a m a C a i x a = u i . c h e c k B o x D i a g r a m a C a i x a−>i s C h e c k e d ( ) ; u s a r Z S c o r e = u i . c h e c k B o x Z S c o r e−>i s C h e c k e d ( ) ; ( ! u s a r D i a g r a m a C a i x a && ! u s a r Z S c o r e ) QMessageBox : : w a r n i n g (NULL, fromLatin1 ( ” S e l e c i o n e outliers ! ”) ) ; return ; QString : : fromLatin1 ( ” Aviso ” ) , QString : : p e l o menos uma t é c n i c a de d e t e c ç ã o de } setupProgressBar () ; p r o g r e s s −>s e t L a b e l T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” D e t e c t a n d o o u t l i e r s . . . ” ) ) ; p r o g r e s s −>show ( ) ; Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : E x c l u d e U s e r I n p u t E v e n t s ) ; const v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; i n d i c e s O u t l i e r s P o r A t r i b = map<s t r i n g , v e c t o r <s i z e t >>() ; s e t <s i z e t > t o d o s I n d i c e s O u t l i e r s = s e t <s i z e t >() ; s i z e t iTab = 0 ; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s Q u a n t . c b e g i n () ; c i t A t r i b u t o != a t r i b u t o s Q u a n t . c e n d ( ) ; c i t A t r i b u t o ++, iTab++) { c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > m a p I n d i c e O u t l i e r = map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t >() ; if { ( usarDiagramaCaixa ) const const double double fatorWI = fatorWS = w i d g e t s P a r a m D i a g C a i x a [ iTab]−>f a t o r W I ( ) ; w i d g e t s P a r a m D i a g C a i x a [ iTab]−>fatorWS ( ) ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>o u t l i e r s D i a g r a m a C a i x a ( a t r i b u t o , fatorWS , f a t o r W I , m a p I n d i c e O u t l i e r ) ; 43 44 45 46 47 48 49 50 } 51 52 53 } if { ( usarZScore ) const const d o u b l e zMin = d o u b l e zMax = w i d g e t s P a r a m Z s c o r e [ iTab]−>zMin ( ) ; w i d g e t s P a r a m Z s c o r e [ iTab]−>zMax ( ) ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>o u t l i e r s Z S c o r e ( a t r i b u t o , zMin , zMax , m a p I n d i c e O u t l i e r ) ; v e c t o r <s i z e t > i n d i c e s O u t l i e r s = v e c t o r <s i z e t >() ; 180 54 55 56 i n d i c e s O u t l i e r s . reserve ( mapIndiceOutlier . s i z e () ) ; for 57 58 59 60 61 62 63 64 65 66 67 68 { const indicesOutliersPorAtrib [ atributo ] = indicesOutliers ; p r o g r e s s −>s e t V a l u e ( min ( ( i n t ) ( ( iTab + 1 ) ∗ 1 . 0 / a t r i b u t o s Q u a n t . s i z e ( ) ∗ 100) , 99) ) ; Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : E x c l u d e U s e r I n p u t E v e n t s ) ; } v e c t o r <s i z e t > t o d o s I n d i c e s O u t l i e r s V e c t o r = v e c t o r <s i z e t >() ; c o p y ( t o d o s I n d i c e s O u t l i e r s . b e g i n ( ) , t o d o s I n d i c e s O u t l i e r s . end ( ) , back inserter ( todosIndicesOutliersVector ) ) ; p r o g r e s s −>d e l e t e L a t e r ( ) ; p r o g r e s s −>c l o s e ( ) ; setupPgTratarOutliers ( todosIndicesOutliersVector ) ; u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x (PAGE TRATAR OUTLIERS) ; } void { DialogImportacaoDados : : v o l t a r C l i c k P g S e l T e c O u t l i e r s ( ) if { ( widgetTabelaEditoraTratarInterCateg ) u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE TRATAR VALORES INVALIDOS) ; 87 88 89 90 } else { 91 92 93 94 95 } 105 106 107 108 109 110 111 112 113 114 115 116 117 118 i n d i c e = c i t I n d i c e V a l o r −> f i r s t ; } 70 71 72 73 96 97 98 99 100 101 102 103 104 size t i n d i c e s O u t l i e r s . push back ( i n d i c e ) ; todosIndicesOutliers . insert ( indice ) ; 69 74 75 76 77 78 79 80 81 82 83 84 85 86 ( map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > : : c o n s t i t e r a t o r citIndiceValor = mapIndiceOutlier . cbegin () ; c i t I n d i c e V a l o r != m a p I n d i c e O u t l i e r . c e n d ( ) ; c i t I n d i c e V a l o r ++) u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE INTERV CAR VALIDOS ) ; } void { DialogImportacaoDados : : setupPgSelTecOutliers ( ) const v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; u i . t a b W i d g e t P a r a m s D i a g C a i x a−>c l e a r ( ) ; u i . t a b W i d g e t P a r a m s Z S c o r e−>c l e a r ( ) ; widgetsParamDiagCaixa . c l e a r ( ) ; widgetsParamZscore . c l e a r ( ) ; s i z e t iTab = 0 ; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s Q u a n t . c b e g i n () ; c i t A t r i b u t o != a t r i b u t o s Q u a n t . c e n d ( ) ; c i t A t r i b u t o ++, iTab++) { c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; WidgetParamDiagCaixa ∗ w i d g e t P a r a m D i a g C a i x a = new WidgetParamDiagCaixa ( t r u e , a t r i b u t o , u i . tabWidgetParamsDiagCaixa ) ; u i . t a b W i d g e t P a r a m s D i a g C a i x a−>i n s e r t T a b ( iTab , w i d g e t P a r a m D i a g C a i x a , QString : : fromLatin1 ( a t r i b u t o . c s t r ( ) ) ) ; widgetsParamDiagCaixa . push back ( widgetParamDiagCaixa ) ; c o n n e c t ( w i d g e t P a r a m D i a g C a i x a , SIGNAL ( a p l i c a r P a r a m s D C T o d o s ( c o n s t d o u b l e , c o n s t d o u b l e ) ) , t h i s , SLOT( a p l i c a r P a r a m s D C T o d o s ( c o n s t double , c o n s t double ) ) ) ; W i d g e t P a r a m Z s c o r e ∗ w i d g e t P a r a m Z s c o r e = new W i d g e t P a r a m Z s c o r e ( t r u e , a t r i b u t o , u i . tabWidgetParamsZScore ) ; u i . t a b W i d g e t P a r a m s Z S c o r e−>i n s e r t T a b ( iTab , w i d g e t P a r a m Z s c o r e , QString : : fromLatin1 ( a t r i b u t o . c s t r ( ) ) ) ; widgetsParamZscore . push back ( widgetParamZscore ) ; c o n n e c t ( w i d g e t P a r a m Z s c o r e , SIGNAL ( a p l i c a r P a r a m s Z S T o d o s ( c o n s t d o u b l e , c o n s t d o u b l e ) ) , t h i s , SLOT( a p l i c a r P a r a m s Z S T o d o s ( c o n s t d o u b l e , const double ) ) ) ; 181 119 120 121 122 123 } } void for 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 DialogImportacaoDados : : aplicarParamsDCTodos ( c o n s t c o n s t d o u b l e fatorWS ) double fatorWI , { ( v e c t o r <WidgetParamDiagCaixa ∗ > : : c o n s t i t e r a t o r citWidgetParamDiagCaixa = widgetsParamDiagCaixa . c b e g i n ( ) ; c i t W i d g e t P a r a m D i a g C a i x a != widgetsParamDiagCaixa . cend ( ) ; c i t W i d g e t P a r a m D i a g C a i x a++) { WidgetParamDiagCaixa ∗ w i d g e t P a r a m D i a g C a i x a = ∗ citWidgetParamDiagCaixa ; w i d g e t P a r a m D i a g C a i x a−>s e t F a t o r W I ( f a t o r W I ) ; w i d g e t P a r a m D i a g C a i x a−>setFatorWS ( fatorWS ) ; } } void DialogImportacaoDados : : aplicarParamsZSTodos ( const d o u b l e zMax ) double zMin , const { for ( v e c t o r <W i d g e t P a r a m Z s c o r e ∗ > : : c o n s t i t e r a t o r c i t W i d g e t P a r a m Z s c o r e = widgetsParamZscore . cbegin () ; c i t W i d g e t P a r a m Z s c o r e != widgetsPa ramZscore . cend ( ) ; c i t W i d g e t P a r a m Z s c o r e++) { WidgetParamZscore ∗ widgetParamZscore = ∗ citWidgetParamZscore ; w i d g e t P a r a m Z s c o r e−>s e t Z M i n ( zMin ) ; w i d g e t P a r a m Z s c o r e−>setZMax ( zMax ) ; } } Listagem B.41: dialog importacao dados pg 05 tec outliers.cpp 1 #i n c l u d e ” d i a l o g i m p o r t a c a o d a d o s . h ” 2 3 #i n c l u d e ” p o p u l a d o r . h ” 4 5 void DialogImportacaoDados : : proxClickPgTratarOutliers ( ) 6 { 7 setupPgTratarMissingsInvalidos () ; 8 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE TRATAR MISSINGS INVALIDOS ) ; 9 } 10 v o i d D i a l o g I m p o r t a c a o D a d o s : : v o l t a r C l i c k P g T r a t a r O u t l i e r s ( ) 11 { 12 u i . w i d g e t P g T r a t a r O u t l i e r −>l a y o u t ( )−>removeWidget ( widgetTabelaEditoraTratarOutliers ) ; 13 i f ( widgetTabelaEditoraTratarOutliers ) { delete widgetTabelaEditoraTratarOutliers ;} 14 w i d g e t T a b e l a E d i t o r a T r a t a r O u t l i e r s = NULL ; 15 16 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE SEL TEC OUTLIERS ) ; 17 } 18 v o i d D i a l o g I m p o r t a c a o D a d o s : : s e t u p P g T r a t a r O u t l i e r s ( c o n s t v e c t o r <s i z e t > & todosIndicesOutliers ) 19 { 20 w i d g e t T a b e l a E d i t o r a T r a t a r O u t l i e r s = new W i d g e t T a b e l a E d i t o r a ( todosIndicesOutliers , ui . widgetPgTratarOutlier ) ; 21 w i d g e t T a b e l a E d i t o r a T r a t a r O u t l i e r s −>d e s t a c a r ( i n d i c e s O u t l i e r s P o r A t r i b ) ; w i d g e t T a b e l a E d i t o r a T r a t a r O u t l i e r s −>s e t B a r r a M e n u V i s i v e l ( f a l s e ) ; 22 23 u i . w i d g e t P g T r a t a r O u t l i e r −>l a y o u t ( )−>addWidget ( widgetTabelaEditoraTratarOutliers ) ; 24 25 v e c t o r <s t r i n g > strsComboBoxRemover = v e c t o r <s t r i n g >() ; 26 strsComboBoxRemover . p u s h b a c k ( ” S e l e c i o n a d o ” ) ; 27 strsComboBoxRemover . p u s h b a c k ( ” Todos d e s t a c a d o s na c o l u n a ” ) ; 28 strsComboBoxRemover . p u s h b a c k ( ” Todos ” ) ; 29 30 P o p u l a d o r : : populeComboBox ( u i . comboBoxRemoverOutlier , strsComboBoxRemover ) ; 31 32 c o n n e c t ( u i . p u s h B u t t o n R e m o v e r O u t l i e r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( removerOutlierClick () ) ) ; 33 c o n n e c t ( u i . p u s h B u t t o n S u b s t i t u i r O u t l i e r , SIGNAL ( c l i c k e d ( ) ) , w i d g e t T a b e l a E d i t o r a T r a t a r O u t l i e r s , SLOT( s u b s t i t u a C l i c k ( ) ) ) ; 34 } 35 36 v o i d D i a l o g I m p o r t a c a o D a d o s : : r e m o v e r O u t l i e r C l i c k ( ) 37 { 38 const int selecionadoIdx = 0; 182 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 const const int int int todosDestacadosIdx = 1; todosIdx = 2; a t u a l I d x = u i . comboBoxRemoverOutlier−>c u r r e n t I n d e x ( ) ; switch ( atualIdx ) { case selecionadoIdx : { w i d g e t T a b e l a E d i t o r a T r a t a r O u t l i e r s −>r e m o v e r L i n h a ( ) ; } break ; case todosDestacadosIdx : { w i d g e t T a b e l a E d i t o r a T r a t a r O u t l i e r s −> removerLinhasDestacadasDoAtributo ( ) ; } break ; case todosIdx : { w i d g e t T a b e l a E d i t o r a T r a t a r O u t l i e r s −>r e m o v e r T o d a s L i n h a s ( ) ; } break ; } } Listagem B.42: dialog importacao dados pg 06 tratar outliers.cpp 1 #i n c l u d e ” d i a l o g i m p o r t a c a o d a d o s . h ” 2 3 #i n c l u d e ” p o p u l a d o r . h ” 4 #i n c l u d e ” c o l e t o r e s t a t i s t i c a s . h ” 5 6 void DialogImportacaoDados : : p r o x C l i c k P g T r a t a r M i s s i n g s I n v a l i d o s ( ) 7 { 8 accept () ; 9 } 10 v o i d D i a l o g I m p o r t a c a o D a d o s : : v o l t a r C l i c k P g T r a t a r M i s s i n g s I n v a l i d o s ( ) 11 { 12 u i . w i d g e t P g T r a t a r M i s s i n g s I n v a l i d o s −>l a y o u t ( )−>removeWidget ( widgetTabelaEditoraTratarMissingsInvalidos ) ; 13 i f ( widgetTabelaEditoraTratarMissingsInvalidos ) { delete widgetTabelaEditoraTratarMissingsInvalidos ;} w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s = NULL ; 14 15 16 u i . s t a c k e d W i d g e t I n f o r m a c o e s −>s e t C u r r e n t I n d e x ( PAGE TRATAR MISSINGS INVALIDOS ) ; 17 18 } 19 v o i d D i a l o g I m p o r t a c a o D a d o s : : s e t u p P g T r a t a r M i s s i n g s I n v a l i d o s ( ) 20 { 21 c o n s t v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; 22 P o p u l a d o r : : populeComboBox ( u i . c o m b o B o x V a r i a v e i s R e f e r e n c i a , atributosQuant ) ; 23 24 c o n n e c t ( u i . p u s h B u t t o n G e r a r R e g i s t r o s M i s s i n g s , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( p u s h B u t t o n G e r a r R e g i s t r o s M i s s i n g s ( ) ) ) ; 25 c o n n e c t ( u i . c h e c k B o x U t i l i z a r V a r R e f , SIGNAL ( t o g g l e d ( b o o l ) ) , u i . c o m b o B o x V a r i a v e i s R e f e r e n c i a , SLOT( s e t E n a b l e d ( b o o l ) ) ) ; 26 c o n n e c t ( u i . c h e c k B o x U t i l i z a r V a r R e f , SIGNAL ( t o g g l e d ( b o o l ) ) , u i . p u s h B u t t o n G e r a r R e g i s t r o s M i s s i n g s , SLOT( s e t E n a b l e d ( b o o l ) ) ) ; 27 28 v e c t o r <s i z e t > r e g i s t r o s M i s s I n v = v e c t o r <s i z e t >() ; 29 map<s t r i n g , v e c t o r <s i z e t >> m i s s I n v a P o r A t r i b u t o = map<s t r i n g , v e c t o r < s i z e t >>() ; 30 31 T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> identificarRegistrosMissingsInvalidos ( registrosMissInv , missInvaPorAtributo ) ; 32 33 w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s = new W i d g e t T a b e l a E d i t o r a ( registrosMissInv , ui . widgetPgTratarMissingsInvalidos ) ; 34 w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s −>d e s t a c a r ( missInvaPorAtributo ) ; 35 w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s −>s e t B a r r a M e n u V i s i v e l ( f a l s e ) ; 36 u i . w i d g e t P g T r a t a r M i s s i n g s I n v a l i d o s −>l a y o u t ( )−>addWidget ( widgetTabelaEditoraTratarMissingsInvalidos ) ; 183 37 38 39 40 41 42 43 v e c t o r <s t r i n g > strsComboBoxRemover = v e c t o r <s t r i n g >() ; strsComboBoxRemover . p u s h b a c k ( ” S e l e c i o n a d o ” ) ; strsComboBoxRemover . p u s h b a c k ( ” Todos d e s t a c a d o s na c o l u n a ” ) ; strsComboBoxRemover . p u s h b a c k ( ” Todos ” ) ; P o p u l a d o r : : populeComboBox ( u i . comboBoxRemoverMissInv , strsComboBoxRemover ) ; 44 45 c o n n e c t ( u i . p u s h B u t t o n R e m o v e r M i s s I n v , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( removerMissInvClick () ) ) ; c o n n e c t ( u i . p u s h B u t t o n S u b s t i t u i r M i s s I n v , SIGNAL ( c l i c k e d ( ) ) , w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s , SLOT( s u b s t i t u a C l i c k ( ) )); 46 47 48 49 50 51 52 53 } void { DialogImportacaoDados : : pushButtonGerarRegistrosMissings ( ) if { ( u i . c h e c k B o x U t i l i z a r V a r R e f −>i s C h e c k e d ( ) ) c o n s t s t r i n g a t r i b u t o R e f e r e n c i a = u i . c o m b o B o x V a r i a v e i s R e f e r e n c i a −> currentText ( ) . toLatin1 ( ) . data ( ) ; v e c t o r <i n t > v a l o r e s F a l t a n t e s = v e c t o r <i n t >() ; s t r i n g msg = ” ” ; c o n s t b o o l s u c e s s o = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> e h V a r i a v e l R e f e r e n c i a ( a t r i b u t o R e f e r e n c i a , v a l o r e s F a l t a n t e s , msg ); 54 55 56 57 58 59 60 i f (! sucesso ) { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( msg . c s t r ( ) ) ) ; return ; } 61 62 63 64 for 65 66 67 68 69 { const const 70 71 int valorFaltanteInt = ∗citValorFaltante ; s i z e t indiceNovoReg = TabelaDeRegistros : : o b t e r I n s t a n c i a ( )−>n o v o R e g i s t r o ( ) ; ValorBase ∗ const v a l o r F a l t a n t e = TabelaDeRegistros : : gerarValorQuant ( v a l o r F a l t a n t e I n t ) ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t u a l i z e R e g i s t r o ( indiceNovoReg , a t r i b u t o R e f e r e n c i a , v a l o r F a l t a n t e ) ; delete valorFaltante ; 72 73 74 75 76 } const v e c t o r <s t r i n g > &a t r i b u t o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s ( ) ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> coletarEstatisticasDosAtributos ( atributos ) ; 77 } 78 79 80 u i . w i d g e t P g T r a t a r M i s s i n g s I n v a l i d o s −>l a y o u t ( )−>removeWidget ( widgetTabelaEditoraTratarMissingsInvalidos ) ; i f ( widgetTabelaEditoraTratarMissingsInvalidos ) { delete widgetTabelaEditoraTratarMissingsInvalidos ;} w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s = NULL ; 81 82 83 84 85 v e c t o r <s i z e t > r e g i s t r o s M i s s I n v = v e c t o r <s i z e t >() ; map<s t r i n g , v e c t o r <s i z e t >> m i s s I n v a P o r A t r i b u t o = map<s t r i n g , s i z e t >>() ; 86 87 vector< T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> identificarRegistrosMissingsInvalidos ( registrosMissInv , missInvaPorAtributo ) ; 88 89 w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s = new W i d g e t T a b e l a E d i t o r a ( registrosMissInv , ui . widgetPgTratarMissingsInvalidos ) ; w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s −>d e s t a c a r ( missInvaPorAtributo ) ; w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s −>s e t B a r r a M e n u V i s i v e l ( f a l s e ) ; u i . w i d g e t P g T r a t a r M i s s i n g s I n v a l i d o s −>l a y o u t ( )−>addWidget ( widgetTabelaEditoraTratarMissingsInvalidos ) ; 90 91 92 93 94 95 ( v e c t o r <i n t > : : c o n s t i t e r a t o r c i t V a l o r F a l t a n t e = valoresFaltantes . cbegin () ; c i t V a l o r F a l t a n t e != v a l o r e s F a l t a n t e s . c e n d ( ) ; c i t V a l o r F a l t a n t e ++) } void DialogImportacaoDados : : removerMissInvClick ( ) 184 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 { const const const int selecionadoIdx = 0; todosDestacadosIdx = 1; todosIdx = 2; a t u a l I d x = u i . comboBoxRemoverMissInv−>c u r r e n t I n d e x ( ) ; switch ( atualIdx ) { case selecionadoIdx : { w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s −>r e m o v e r L i n h a ( ) ; } break ; case todosDestacadosIdx : { w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s −> removerLinhasDestacadasDoAtributo ( ) ; } break ; case todosIdx : { w i d g e t T a b e l a E d i t o r a T r a t a r M i s s i n g s I n v a l i d o s −>r e m o v e r T o d a s L i n h a s () ; } break ; } 113 114 115 116 117 118 119 120 121 int int int } Listagem B.43: dialog importacao dados pg 07 tratar missings invalidos.cpp 1 2 3 4 5 6 7 8 9 10 11 12 #i n c l u d e ” d i a l o g n o v a c o l u n a . h” #i n c l u d e ” t a b e l a r e g i s t r o s . h” #i n c l u d e <QMessageBox> #i n c l u d e <QDebug> D i a l o g N o v a C o l u n a : : D i a l o g N o v a C o l u n a ( QWidget ∗ p a r e n t ) : QDialog ( p a r e n t ) { ui . setupUi ( t h i s ) ; u i . comboBoxTipo−>addItem ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o c o n tı́ n u o ” ) , ( i n t ) TipoDado AT : : QUANT CONTINUO) ; u i . comboBoxTipo−>addItem ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o d i s c r e t o ” ) , ( i n t ) TipoDado AT : : QUANT DISCRETO) ; u i . comboBoxTipo−>addItem ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a l i t a t i v o ” ) , ( i n t ) TipoDado AT : : QUALITATIVO) ; 13 14 15 16 c o n n e c t ( u i . p u s h B u t t o n I n s e r i r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( inserirClick () ) ) ; c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( r e j e c t ( ) ) ) ; 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; } DialogNovaColuna : : ˜ DialogNovaColuna ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; qDebug ( ) << } void { DialogNovaColuna : : i n s e r i r C l i c k ( ) const const 32 33 34 35 if { 36 37 } else 38 { s t r i n g n o v o A t r i b u t o = u i . l i n e E d i t N o m e−>t e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; TipoDado AT t i p o = ( TipoDado AT ) ( u i . comboBoxTipo−>i t e m D a t a ( u i . comboBoxTipo−>c u r r e n t I n d e x ( ) ) . t o I n t ( ) ) ; ( n o v o A t r i b u t o . empty ( ) ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ” I n s i r a um nome v á l i d o ! ” ) ) ; i f ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e x i s t e A t r i b u t o ( novoAtributo ) ) QString : : 185 39 40 41 42 43 44 45 46 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Um a t r i b u t o com e s t e nome j á e x i s t e ! ” ) ) ; } else { emit i n s e r i r C o l u n a ( novoAtributo , accept () ; tipo ) ; } } Listagem B.44: dialog nova coluna.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #i f n d e f DIALOG NOVA COLUNA H #d e f i n e DIALOG NOVA COLUNA H #i n c l u d e ” u i d i a l o g n o v a c o l u n a . h” #i n c l u d e ” enums at . h” #i n c l u d e <s t r i n g > using namespace std ; c l a s s DialogNovaColuna { Q OBJECT : public QDialog public : D i a l o g N o v a C o l u n a ( QWidget ∗ p a r e n t = 0 ) ; ˜ DialogNovaColuna ( ) ; private : Ui : : D i a l o g N o v a C o l u n a ui ; private slots : void i n s e r i r C l i c k () ; signals : void inserirColuna ( const s t r i n g &, const TipoDado AT ) ; }; #e n d i f // DIALOG NOVA COLUNA H Listagem B.45: dialog nova coluna.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g N o v a C o l u n a </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g N o v a C o l u n a ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >186</width> 10 <h e i g h t >132</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >I n s e r i r Coluna </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 17 <i t e m> 18 <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> 19 <p r o p e r t y name=” t i t l e ”> 20 <s t r i n g >I n s e r i r Coluna </ s t r i n g > 21 </ p r o p e r t y > 22 <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> 23 <i t e m row=” 0 ” column=” 0 ”> 24 <w i d g e t c l a s s =” QLabel ” name=” l a b e l ”> 25 <p r o p e r t y name=” t e x t ”> 26 <s t r i n g >Nome: </ s t r i n g > 27 </ p r o p e r t y > 28 </w i d g e t > 29 </i t e m> 30 <i t e m row=” 0 ” column=” 1 ”> 31 <w i d g e t c l a s s =” Q L i n e E d i t ” name=” l i n e E d i t N o m e ”/> 186 32 </i t e m> 33 <i t e m row=” 1 ” column=” 0 ”> 34 <w i d g e t c l a s s =” QLabel ” name=” l a b e l 2 ”> 35 <p r o p e r t y name=” t e x t ”> 36 <s t r i n g >Tipo </ s t r i n g > 37 </ p r o p e r t y > 38 </w i d g e t > 39 </i t e m> 40 <i t e m row=” 1 ” column=” 1 ”> 41 <w i d g e t c l a s s =”QComboBox” name=” comboBoxTipo ”/> 42 </i t e m> 43 </ l a y o u t > 44 </w i d g e t > 45 </i t e m> 46 <i t e m> 47 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 48 <i t e m> 49 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 50 <p r o p e r t y name=” o r i e n t a t i o n ”> 51 <enum>Qt : : H o r i z o n t a l </enum> 52 </ p r o p e r t y > 53 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 54 <s i z e > 55 <width >40</width> 56 <h e i g h t >20</ h e i g h t > 57 </ s i z e > 58 </ p r o p e r t y > 59 </ s p a c e r > 60 </i t e m> 61 <i t e m> 62 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n I n s e r i r ”> 63 <p r o p e r t y name=” t e x t ”> 64 <s t r i n g >I n s e r i r </ s t r i n g > 65 </ p r o p e r t y > 66 </w i d g e t > 67 </i t e m> 68 <i t e m> 69 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a n c e l a r ”> 70 <p r o p e r t y name=” t e x t ”> 71 <s t r i n g >C a n c e l a r </ s t r i n g > 72 </ p r o p e r t y > 73 </w i d g e t > 74 </i t e m> 75 </ l a y o u t > 76 </i t e m> 77 </ l a y o u t > 78 </w i d g e t > 79 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 80 < r e s o u r c e s /> 81 <c o n n e c t i o n s /> 82 </u i > Listagem B.46: dialog nova coluna.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #i n c l u d e ” d i a l o g r e m i d e o u t l i e r s . h” #i n c l u d e ” c o l e t o r e s t a t i s t i c a s . h” #i n c l u d e <QMessageBox> #i n c l u d e <QDebug> DialogRemIdeOutliers : : DialogRemIdeOutliers ( const ∗parent ) atributo ( atribuito ) : QDialog ( p a r e n t ) , { ui . setupUi ( t h i s ) ; s t r i n g &a t r i b u i t o , QWidget w i d g e t P a r a m D i a g C a i x a = new WidgetParamDiagCaixa ( f a l s e , a t r i b u i t o , t h i s ); w i d g e t P a r a m Z s c o r e = new W i d g e t P a r a m Z s c o r e ( f a l s e , a t r i b u i t o , t h i s ) ; u i . tabWidget−>i n s e r t T a b ( A b a s I n d i c e : : DIAG CAIXA , widgetParamDiagCaixa , Q S t r i n g : : f r o m L a t i n 1 ( ” Diagrama C a i x a ” ) ) ; u i . tabWidget−>i n s e r t T a b ( A b a s I n d i c e : : Z SCORE , widgetParamZscore , Q S t r i n g : : f r o m L a t i n 1 ( ”Z−S c o r e ” ) ) ; c o n n e c t ( u i . pushButtonRemover , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( removerClick () ) ) ; c o n n e c t ( u i . p u s h B u t t o n I d e n t i f i c a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( identificarClick () ) ) ; 187 21 c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( r e j e c t ( ) ) ) ; 22 23 s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; 24 } 25 26 D i a l o g R e m I d e O u t l i e r s : : ˜ D i a l o g R e m I d e O u t l i e r s ( ) 27 { 28 c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; 29 qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; 30 } 31 32 map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > D i a l o g R e m I d e O u t l i e r s : : g e t O u t l i e r s ( ) const 33 { 34 map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > m a p I n d i c e O u t l i e r = map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t >() ; 35 36 i f ( u i . tabWidget−>c u r r e n t I n d e x ( ) == A b a s I n d i c e : : DIAG CAIXA ) 37 { 38 c o n s t d o u b l e fatorWS = w i d g e t P a r a m D i a g C a i x a−>fatorWS ( ) ; 39 c o n s t d o u b l e f a t o r W I = w i d g e t P a r a m D i a g C a i x a−>f a t o r W I ( ) ; 40 C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>o u t l i e r s D i a g r a m a C a i x a ( a t r i b u t o , fatorWS , f a t o r W I , m a p I n d i c e O u t l i e r ) ; 41 } 42 e l s e i f ( u i . tabWidget−>c u r r e n t I n d e x ( ) == A b a s I n d i c e : : Z SCORE ) 43 { 44 c o n s t d o u b l e zMin = w i d g e t P a r a m Z s c o r e−>zMin ( ) ; 45 c o n s t d o u b l e zMax = w i d g e t P a r a m Z s c o r e−>zMax ( ) ; 46 C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>o u t l i e r s Z S c o r e ( a t r i b u t o , zMin , zMax , m a p I n d i c e O u t l i e r ) ; 47 } 48 49 return mapIndiceOutlier ; 50 } 51 52 v o i d D i a l o g R e m I d e O u t l i e r s : : r e m o v e r C l i c k ( ) 53 { 54 map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > m a p I n d i c e O u t l i e r = g e t O u t l i e r s ( ) ; 55 56 v e c t o r <V a l o r B a s e ∗ c o n s t > o u t l i e r s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; 57 o u t l i e r s . reserve ( mapIndiceOutlier . s i z e () ) ; 58 f o r ( map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > : : c o n s t i t e r a t o r c i t I n d i c e O u t l i e r = mapIndiceOutlier . cbegin () ; 59 c i t I n d i c e O u t l i e r != m a p I n d i c e O u t l i e r . c e n d ( ) ; 60 c i t I n d i c e O u t l i e r ++) 61 { 62 o u t l i e r s . p u s h b a c k ( s t a t i c c a s t <V a l o r B a s e ∗ c o n s t >( c i t I n d i c e O u t l i e r −> second ) ) ; 63 } 64 65 i f ( ! o u t l i e r s . empty ( ) ) 66 { atributo , false , f a l s e ) ; 67 emit removerRegistrosPorValor ( o u t l i e r s , 68 accept () ; 69 } 70 else 71 { 72 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Nenhum o u t l i e r e n c o n t r a d o ! ” ) ) ; 73 } 74 } 75 76 v o i d D i a l o g R e m I d e O u t l i e r s : : i d e n t i f i c a r C l i c k ( ) 77 { 78 map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > m a p I n d i c e O u t l i e r = g e t O u t l i e r s ( ) ; 79 80 v e c t o r <V a l o r B a s e ∗ c o n s t > o u t l i e r s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; 81 o u t l i e r s . reserve ( mapIndiceOutlier . s i z e () ) ; 82 f o r ( map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > : : c o n s t i t e r a t o r c i t I n d i c e O u t l i e r = mapIndiceOutlier . cbegin () ; 83 c i t I n d i c e O u t l i e r != m a p I n d i c e O u t l i e r . c e n d ( ) ; 84 c i t I n d i c e O u t l i e r ++) 85 { 86 o u t l i e r s . p u s h b a c k ( s t a t i c c a s t <V a l o r B a s e ∗ c o n s t >( c i t I n d i c e O u t l i e r −> second ) ) ; 87 } 88 89 i f ( ! o u t l i e r s . empty ( ) ) 90 { 91 emit i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( o u t l i e r s , atributo , false , f a l s e ); 188 92 93 94 95 } else { 96 97 98 } QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ”Nenhum o u t l i e r e n c o n t r a d o ! ” ) ) ; QString : : } Listagem B.47: dialog rem ide outliers.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #i f n d e f TELA REM IDE OUTLIERS H #d e f i n e TELA REM IDE OUTLIERS H #i n c l u d e ” u i d i a l o g r e m i d e o u t l i e r s . h” #i n c l u d e #i n c l u d e ” w i d g e t p a r a m d i a g c a i x a . h” ” w i d g e t p a r a m z s c o r e . h” #i n c l u d e ” v a l o r q u a n t i t a t i v o . h” #i n c l u d e <map> using namespace std ; c l a s s DialogRemIdeOutliers { Q OBJECT : public public : DialogRemIdeOutliers ( const ˜ DialogRemIdeOutliers () ; QDialog s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t = 0 ) ; private : enum A b a s I n d i c e {DIAG CAIXA = 0 , Z SCORE = 1 } ; Ui : : D i a l o g R e m I d e O u t l i e r s u i ; WidgetParamDiagCaixa ∗ w i d g e t P a r a m D i a g C a i x a ; WidgetParamZscore ∗ w i d g e t P a r a m Z s c o r e ; string atributo ; map<s i z e t , ValorQuantitativo ∗const> g e t O u t l i e r s ( ) const ; private slots : void removerClick () ; void i d e n t i f i c a r C l i c k () ; signals : void void 41 } ; 42 43 #e n d i f r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g &, c o n s t bool , c o n s t b o o l ) ; i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g &, c o n s t bool , c o n s t b o o l ) ; // TELA REM IDE OUTLIERS H Listagem B.48: dialog rem ide outliers.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g R e m I d e O u t l i e r s </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g R e m I d e O u t l i e r s ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >574</width> 10 <h e i g h t >358</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >Remover / I d e n t i d i c a r O u t l i e r s </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> 17 <i t e m> 189 18 <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> 19 <p r o p e r t y name=” t i t l e ”> 20 <s t r i n g >Remover / I d e n t i f i c a r O u t l i e r s </ s t r i n g > 21 </ p r o p e r t y > 22 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 23 <i t e m> 24 <w i d g e t c l a s s =” QTabWidget ” name=” t a b W i d g e t ”/> 25 </i t e m> 26 </ l a y o u t > 27 </w i d g e t > 28 </i t e m> 29 <i t e m> 30 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 31 <i t e m> 32 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 33 <p r o p e r t y name=” o r i e n t a t i o n ”> 34 <enum>Qt : : H o r i z o n t a l </enum> 35 </ p r o p e r t y > 36 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 37 <s i z e > 38 <width >40</width> 39 <h e i g h t >20</ h e i g h t > 40 </ s i z e > 41 </ p r o p e r t y > 42 </ s p a c e r > 43 </i t e m> 44 <i t e m> 45 <w i d g e t c l a s s =” QPushButton ” name=” pushButtonRemover ”> 46 <p r o p e r t y name=” t e x t ”> 47 <s t r i n g >Remover</ s t r i n g > 48 </ p r o p e r t y > 49 </w i d g e t > 50 </i t e m> 51 <i t e m> 52 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n I d e n t i f i c a r ”> 53 <p r o p e r t y name=” t e x t ”> 54 <s t r i n g >I d e n t i f i c a r </ s t r i n g > 55 </ p r o p e r t y > 56 </w i d g e t > 57 </i t e m> 58 <i t e m> 59 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a n c e l a r ”> 60 <p r o p e r t y name=” t e x t ”> 61 <s t r i n g >C a n c e l a r </ s t r i n g > 62 </ p r o p e r t y > 63 </w i d g e t > 64 </i t e m> 65 </ l a y o u t > 66 </i t e m> 67 </ l a y o u t > 68 </w i d g e t > 69 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 70 < r e s o u r c e s /> 71 <c o n n e c t i o n s /> 72 </u i > Listagem B.49: dialog rem ide outliers.ui 1 #i n c l u d e ” d i a l o g r e m i d e q u a l i . h ” 2 3 #i n c l u d e <QMessageBox> 4 #i n c l u d e <QDebug> 5 6 DialogRemIdeQuali : : DialogRemIdeQuali ( 7 c o n s t s t r i n g &a t r i b u t o , 8 QWidget ∗ p a r e n t ) 9 : QDialog ( p a r e n t ) 10 { 11 ui . setupUi ( t h i s ) ; 12 atributo = atributo ; 13 14 u i . l a b e l A t r i b u t o −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( a t r i b u t o . c s t r ( ) ) ) ; 15 16 w i d g e t C a t e g o r i a s Q u a l = new W i d g e t C a t e g o r i a s Q u a l ( a t r i b u t o , u i . groupBox ) ; 17 w i d g e t C a t e g o r i a s Q u a l −>s e t H a b i l i t a d o C o m b o B o x A t r i b u t o s ( f a l s e ) ; 18 w i d g e t C a t e g o r i a s Q u a l −>s e t A t r i b u t o A t u a l C o m b o B o x A t r i b u t o s ( a t r i b u t o ) ; 19 u i . groupBox−>l a y o u t ( )−>addWidget ( w i d g e t C a t e g o r i a s Q u a l ) ; 20 190 21 c o n n e c t ( u i . pushButtonRemover , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( removerClick () ) ) ; c o n n e c t ( u i . p u s h B u t t o n I d e n t i f i c a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( identificarClick () ) ) ; c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( r e j e c t ( ) ) ) ; 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; } DialogRemIdeQuali : : ˜ DialogRemIdeQuali ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } void { DialogRemIdeQuali : : removerClick ( ) v e c t o r <V a l o r B a s e ∗ c o n s t > s e l e c i o n a d o s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; w i d g e t C a t e g o r i a s Q u a l −>o b t e r S e l e c i o n a d o s ( s e l e c i o n a d o s ) ; if { ( ! s e l e c i o n a d o s . empty ( ) ) emit 42 43 for 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r selecionados . cbegin () ; c i t S e l e c i o n a d o != s e l e c i o n a d o s . c e n d ( ) ; c i t S e l e c i o n a d o ++) atributo , false citSelecionado = delete ∗citSelecionado ; } accept () ; } else { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ”Nenhum v a l o r s e l e c i o n a d o ! ” ) ) ; QString : : } } void { DialogRemIdeQuali : : i d e n t i f i c a r C l i c k ( ) v e c t o r <V a l o r B a s e ∗ c o n s t > s e l e c i o n a d o s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; w i d g e t C a t e g o r i a s Q u a l −>o b t e r S e l e c i o n a d o s ( s e l e c i o n a d o s ) ; if { ( ! s e l e c i o n a d o s . empty ( ) ) emit for 68 69 70 71 72 73 74 75 76 identificarRegistrosPorValor ( selecionados , atributo , w i d g e t C a t e g o r i a s Q u a l −>c o n s i d e r a r M i s s i n g s ( ) , f a l s e ) ; ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r selecionados . cbegin () ; c i t S e l e c i o n a d o != s e l e c i o n a d o s . c e n d ( ) ; c i t S e l e c i o n a d o ++) citSelecionado = { delete ∗citSelecionado ; } } else { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ”Nenhum v a l o r s e l e c i o n a d o ! ” ) ) ; } } Listagem B.50: dialog rem ide quali.cpp 1 2 3 4 5 6 7 8 9 false , { 66 67 77 78 removerRegistrosPorValor ( selecionados , ); #i f n d e f #d e f i n e DIALOG REM IDE QUALI H DIALOG REM IDE QUALI H #i n c l u d e ” u i d i a l o g r e m i d e q u a l i . h” #i n c l u d e ” w i d g e t c a t e g o r i a s q u a l . h” using namespace std ; QString : : 191 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 c l a s s DialogRemIdeQuali { Q OBJECT : public QDialog public : DialogRemIdeQuali ( c o n s t s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t = 0 ) ; ˜ DialogRemIdeQuali ( ) ; private : Ui : : D i a l o g R e m I d e Q u a l i u i ; WidgetCategoriasQual ∗ widgetCategoriasQual ; string atributo ; private slots : void removerClick () ; void i d e n t i f i c a r C l i c k () ; signals : void void 32 } ; 33 34 #e n d i f r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g &, c o n s t bool , c o n s t b o o l ) ; i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g &, c o n s t bool , c o n s t b o o l ) ; // DIALOG REM IDE QUALI H Listagem B.51: dialog rem ide quali.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g R e m I d e Q u a l i </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g R e m I d e Q u a l i ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >396</width> 10 <h e i g h t >312</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” s i z e P o l i c y ”> 14 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” P r e f e r r e d ”> 15 <h o r s t r e t c h >0</ h o r s t r e t c h > 16 <v e r s t r e t c h >0</ v e r s t r e t c h > 17 </ s i z e p o l i c y > 18 </ p r o p e r t y > 19 <p r o p e r t y name=” w i n d o w T i t l e ”> 20 <s t r i n g >Remover / I d e n t i f i c a r R e g i s t r o s p o r V a l o r Q u a l i t a t i v o </ s t r i n g > 21 </ p r o p e r t y > 22 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> 23 <i t e m> 24 <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> 25 <i t e m row=” 0 ” column=” 0 ”> 26 <w i d g e t c l a s s =” QLabel ” name=” l a b e l ”> 27 <p r o p e r t y name=” t e x t ”> 28 <s t r i n g >A t r i b u t o : </ s t r i n g > 29 </ p r o p e r t y > 30 </w i d g e t > 31 </i t e m> 32 <i t e m row=” 0 ” column=” 1 ”> 33 <w i d g e t c l a s s =” QLabel ” name=” l a b e l A t r i b u t o ”> 34 <p r o p e r t y name=” t e x t ”> 35 <s t r i n g >T e x t L a b e l </ s t r i n g > 36 </ p r o p e r t y > 37 </w i d g e t > 38 </i t e m> 39 </ l a y o u t > 40 </i t e m> 41 <i t e m> 42 <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> 43 <p r o p e r t y name=” s i z e P o l i c y ”> 44 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” Expanding ”> 45 <h o r s t r e t c h >0</ h o r s t r e t c h > 46 <v e r s t r e t c h >0</ v e r s t r e t c h > 47 </ s i z e p o l i c y > 48 </ p r o p e r t y > 49 <p r o p e r t y name=” t i t l e ”> 192 50 <s t r i n g >Remover / I d e n t i f i c a r R e g i s t r o s p o r v a l o r </ s t r i n g > 51 </ p r o p e r t y > 52 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”/> 53 </w i d g e t > 54 </i t e m> 55 <i t e m> 56 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 57 <i t e m> 58 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 59 <p r o p e r t y name=” o r i e n t a t i o n ”> 60 <enum>Qt : : H o r i z o n t a l </enum> 61 </ p r o p e r t y > 62 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 63 <s i z e > 64 <width >40</width> 65 <h e i g h t >20</ h e i g h t > 66 </ s i z e > 67 </ p r o p e r t y > 68 </ s p a c e r > 69 </i t e m> 70 <i t e m> 71 <w i d g e t c l a s s =” QPushButton ” name=” pushButtonRemover ”> 72 <p r o p e r t y name=” t e x t ”> 73 <s t r i n g >Remover</ s t r i n g > 74 </ p r o p e r t y > 75 </w i d g e t > 76 </i t e m> 77 <i t e m> 78 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n I d e n t i f i c a r ”> 79 <p r o p e r t y name=” t e x t ”> 80 <s t r i n g >I d e n t i f i c a r </ s t r i n g > 81 </ p r o p e r t y > 82 </w i d g e t > 83 </i t e m> 84 <i t e m> 85 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a n c e l a r ”> 86 <p r o p e r t y name=” t e x t ”> 87 <s t r i n g >C a n c e l a r </ s t r i n g > 88 </ p r o p e r t y > 89 </w i d g e t > 90 </i t e m> 91 </ l a y o u t > 92 </i t e m> 93 </ l a y o u t > 94 </w i d g e t > 95 < r e s o u r c e s /> 96 <c o n n e c t i o n s /> 97 </u i > Listagem B.52: dialog rem ide quali.ui 1 #i n c l u d e ” d i a l o g r e m i d e q u a n t . h ” 2 #i n c l u d e ” u t i l i d a d e s . h ” 3 4 #i n c l u d e <QDebug> 5 6 DialogRemIdeQuant : : DialogRemIdeQuant ( 7 c o n s t s t r i n g &a t r i b u t o , 8 c o n s t d o u b l e maximo , 9 c o n s t d o u b l e minimo , 10 QWidget ∗ p a r e n t ) 11 : QDialog ( p a r e n t ) 12 { 13 ui . setupUi ( t h i s ) ; 14 atributo = atributo ; 15 16 maximo = maximo ; 17 mi n im o = minimo ; 18 19 u i . l a b e l M a x i m o E d i t−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : d b l T o S t d S t r ( maximo , 0 ) . c s t r ( ) ) ) ; 20 u i . l a b e l M i n i m o E d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : d b l T o S t d S t r ( minimo , 0 ) . c s t r ( ) ) ) ; 21 u i . l a b e l A t r i b u t o −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( a t r i b u t o . c s t r ( ) ) ) ; 22 23 w i d g e t I n t e r v a l o s Q u a n t = new W i d g e t I n t e r v a l o s Q u a n t ( a t r i b u t o , u i . groupBoxValor ) ; 24 w i d g e t I n t e r v a l o s Q u a n t −>s e t H a b i l i t a d o C o m b o B o x A t r i b u t o s ( f a l s e ) ; 25 w i d g e t I n t e r v a l o s Q u a n t −>s e t A t r i b u t o A t u a l C o m b o B o x A t r i b u t o s ( a t r i b u t o ) ; 193 26 27 28 29 u i . g r o u p B o x V a l o r−>l a y o u t ( )−>addWidget ( w i d g e t I n t e r v a l o s Q u a n t ) ; c o n n e c t ( u i . p u s h B u t t o n I d e n t i f i c a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( identificarClick () ) ) ; c o n n e c t ( u i . pushButtonRemover , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( removerClick () ) ) ; c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( r e j e c t ( ) ) ) ; 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; } DialogRemIdeQuant : : ˜ DialogRemIdeQuant ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } void { DialogRemIdeQuant : : i d e n t i f i c a r C l i c k ( ) const const bool bool m i s s i ng s T m b = w i d g e t I n t e r v a l o s Q u a n t −>c o n s i d e r a r M i s s i n g s ( ) ; w i d g e t I n t e r v a l o s Q u a n t −>c o n s i d e r a r I n v a l i d o s ( ) invalidosTmb = ; 46 47 v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > i n t e r v a l o s = v e c t o r < T a b e l a D e R e g i s t r o s : : I n t e r v a l o >() ; 48 49 50 51 52 try { w i d g e t I n t e r v a l o s Q u a n t −>g e r a r I n t e r v a l o s ( i n t e r v a l o s ) ; emit i d e n t i f i c a r R e g i s t r o s Q u a n t P o r I n t e r v a l o ( i n t e r v a l o s , missingsTmb , i n v a l i d o s T m b ) ; } c a t c h ( s t d : : e x c e p t i o n &e ) { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( e . what ( ) ) ) ; } 53 54 55 56 57 58 59 60 61 62 63 atributo , QString : : } void { DialogRemIdeQuant : : r e m o v e r C l i c k ( ) const const bool bool m i s s i ng s T m b = w i d g e t I n t e r v a l o s Q u a n t −>c o n s i d e r a r M i s s i n g s ( ) ; invalidosTmb = w i d g e t I n t e r v a l o s Q u a n t −>c o n s i d e r a r I n v a l i d o s ( ) ; 64 65 v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > i n t e r v a l o s = v e c t o r < T a b e l a D e R e g i s t r o s : : I n t e r v a l o >() ; 66 67 68 69 70 try { w i d g e t I n t e r v a l o s Q u a n t −>g e r a r I n t e r v a l o s ( i n t e r v a l o s ) ; emit removerRegistrosQuantPorIntervalo ( i n t e r v a l o s , atributo , missingsTmb , i n v a l i d o s T m b ) ; accept () ; 71 72 73 74 75 76 77 } c a t c h ( s t d : : e x c e p t i o n &e ) { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( e . what ( ) ) ) ; } } Listagem B.53: dialog rem ide quant.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 #i f n d e f DIALOG REM IDE QUANT H #d e f i n e DIALOG REM IDE QUANT H #i n c l u d e #i n c l u d e ” u i d i a l o g r e m i d e q u a n t . h” ” w i d g e t i n t e r v a l o s q u a n t . h” #i n c l u d e <QMessageBox> using namespace std ; c l a s s DialogRemIdeQuant { Q OBJECT : public QDialog QString : : 194 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 public : DialogRemIdeQuant ( c o n s t s t r i n g &a t r i b u t o , c o n s t d o u b l e maximo , c o n s t d o u b l e minimo , QWidget ∗ p a r e n t = 0 ) ; ˜ DialogRemIdeQuant ( ) ; private : Ui : : DialogRemIdeQuant u i ; WidgetIntervalosQuant ∗ widgetIntervalosQuant ; string atributo ; double maximo ; double m in im o ; private slots : void i d e n t i f i c a r C l i c k () ; void removerClick () ; signals : void 39 void 40 void 41 void 42 } ; 43 44 #e n d i f r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g &, c o n s t bool , c o n s t b o o l ) ; r e m o v e r R e g i s t r o s Q u a n t P o r I n t e r v a l o ( c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ; i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g &, c o n s t bool , c o n s t b o o l ) ; identificarRegistrosQuantPorIntervalo ( const vector< T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t bool ) ; // DIALOG REM IDE QUANT H Listagem B.54: dialog rem ide quant.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >DialogRemIdeQuant </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” DialogRemIdeQuant ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >537</width> 10 <h e i g h t >351</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >Remover / I d e n t i f i c a r R e g i s t r o s p o r V a l o r Q u a n t i t a t i v o </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 17 <i t e m> 18 <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> 19 <p r o p e r t y name=” f i e l d G r o w t h P o l i c y ”> 20 <enum>QFormLayout : : A l l N o n F i x e d F i e l d s G r o w </enum> 21 </ p r o p e r t y > 22 <i t e m row=” 1 ” column=” 0 ”> 23 <w i d g e t c l a s s =” QLabel ” name=” l a b e l 2 ”> 24 <p r o p e r t y name=” t e x t ”> 25 <s t r i n g >Mı́nimo : </ s t r i n g > 26 </ p r o p e r t y > 27 </w i d g e t > 28 </i t e m> 29 <i t e m row=” 1 ” column=” 1 ”> 30 <w i d g e t c l a s s =” QLabel ” name=” l a b e l M i n i m o E d i t ”> 31 <p r o p e r t y name=” t e x t ”> 32 <s t r i n g >T e x t L a b e l </ s t r i n g > 33 </ p r o p e r t y > 34 </w i d g e t > 35 </i t e m> 36 <i t e m row=” 2 ” column=” 0 ”> 37 <w i d g e t c l a s s =” QLabel ” name=” l a b e l 5 ”> 38 <p r o p e r t y name=” t e x t ”> 39 <s t r i n g >Máximo: </ s t r i n g > 40 </ p r o p e r t y > 195 41 </w i d g e t > 42 </i t e m> 43 <i t e m row=” 2 ” column=” 1 ”> 44 <w i d g e t c l a s s =” QLabel ” name=” l a b e l M a x i m o E d i t ”> 45 <p r o p e r t y name=” t e x t ”> 46 <s t r i n g >T e x t L a b e l </ s t r i n g > 47 </ p r o p e r t y > 48 </w i d g e t > 49 </i t e m> 50 <i t e m row=” 0 ” column=” 0 ”> 51 <w i d g e t c l a s s =” QLabel ” name=” l a b e l ”> 52 <p r o p e r t y name=” t e x t ”> 53 <s t r i n g >A t r i b u t o : </ s t r i n g > 54 </ p r o p e r t y > 55 </w i d g e t > 56 </i t e m> 57 <i t e m row=” 0 ” column=” 1 ”> 58 <w i d g e t c l a s s =” QLabel ” name=” l a b e l A t r i b u t o ”> 59 <p r o p e r t y name=” t e x t ”> 60 <s t r i n g >T e x t L a b e l </ s t r i n g > 61 </ p r o p e r t y > 62 </w i d g e t > 63 </i t e m> 64 </ l a y o u t > 65 </i t e m> 66 <i t e m> 67 <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x V a l o r ”> 68 <p r o p e r t y name=” s i z e P o l i c y ”> 69 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” Expanding ”> 70 <h o r s t r e t c h >0</ h o r s t r e t c h > 71 <v e r s t r e t c h >0</ v e r s t r e t c h > 72 </ s i z e p o l i c y > 73 </ p r o p e r t y > 74 <p r o p e r t y name=” t i t l e ”> 75 <s t r i n g >V a l o r </ s t r i n g > 76 </ p r o p e r t y > 77 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”/> 78 </w i d g e t > 79 </i t e m> 80 <i t e m> 81 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> 82 <i t e m> 83 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 84 <p r o p e r t y name=” o r i e n t a t i o n ”> 85 <enum>Qt : : H o r i z o n t a l </enum> 86 </ p r o p e r t y > 87 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 88 <s i z e > 89 <width >40</width> 90 <h e i g h t >20</ h e i g h t > 91 </ s i z e > 92 </ p r o p e r t y > 93 </ s p a c e r > 94 </i t e m> 95 <i t e m> 96 <w i d g e t c l a s s =” QPushButton ” name=” pushButtonRemover ”> 97 <p r o p e r t y name=” t e x t ”> 98 <s t r i n g >Remover</ s t r i n g > 99 </ p r o p e r t y > 100 </w i d g e t > 101 </i t e m> 102 <i t e m> 103 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n I d e n t i f i c a r ”> 104 <p r o p e r t y name=” t e x t ”> 105 <s t r i n g >I d e n t i f i c a r </ s t r i n g > 106 </ p r o p e r t y > 107 </w i d g e t > 108 </i t e m> 109 <i t e m> 110 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a n c e l a r ”> 111 <p r o p e r t y name=” t e x t ”> 112 <s t r i n g >C a n c e l a r </ s t r i n g > 113 </ p r o p e r t y > 114 </w i d g e t > 115 </i t e m> 116 </ l a y o u t > 117 </i t e m> 118 </ l a y o u t > 119 </w i d g e t > 120 < r e s o u r c e s /> 121 <c o n n e c t i o n s /> 122 </u i > 196 Listagem B.55: dialog rem ide quant.ui 1 #i n c l u d e ” d i a l o g r e n o m e a r . h ” 2 3 #i n c l u d e ” t a b e l a r e g i s t r o s . h ” 4 5 #i n c l u d e <QDebug> 6 7 u s i n g namespace s t d ; 8 9 DialogRenomear : : DialogRenomear ( 10 c o n s t s t r i n g &a t r i b u t o , 11 QWidget ∗ p a r e n t ) 12 : QDialog ( p a r e n t ) 13 { 14 ui . setupUi ( t h i s ) ; 15 16 c o n n e c t ( u i . pushButtonRenomear , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( renomearClique ( ) ) ) ; 17 c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( r e j e c t ( ) ) ) ; 18 19 atributo = atributo ; 20 21 u i . l a b e l N o m e A t u a l E d i t−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( a t r i b u t o . c s t r ( ) ) ) ; 22 23 s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; 24 } 25 26 D i a l o g R e n o m e a r : : ˜ D i a l o g R e n o m e a r ( ) 27 { 28 c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; 29 qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; 30 } 31 32 v o i d D i a l o g R e n o m e a r : : r e n o m e a r C l i q u e ( ) 33 { 34 c o n s t s t r i n g novoNome = ( s t r i n g ) u i . l i n e E d i t N o v o N o m e−>t e x t ( ) . t o L a t i n 1 ( ) . data ( ) ; 35 36 i f ( novoNome . empty ( ) ) 37 { 38 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” I n s i r a um novo nome ! ” ) ) ; 39 } 40 e l s e i f ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e x i s t e A t r i b u t o ( novoNome ) ) 41 { 42 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Um a t r i b u t o com e s t e nome j á e x i s t e ! ” ) ) ; 43 } 44 else 45 { 46 e m i t r e n o m e a r ( a t r i b u t o , novoNome ) ; 47 accept () ; 48 } 49 } Listagem B.56: dialog renomear.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #i f n d e f DIALOG RENOMEAR H #d e f i n e DIALOG RENOMEAR H #i n c l u d e ” u i d i a l o g r e n o m e a r . h” #i n c l u d e <QMessageBox> #i n c l u d e <s t r i n g > using namespace std ; c l a s s DialogRenomear { Q OBJECT : public QDialog 197 16 p u b l i c : 17 DialogRenomear ( 18 c o n s t s t r i n g &a t r i b u t o , 19 QWidget ∗ p a r e n t = 0 ) ; 20 ˜ DialogRenomear ( ) ; 21 22 p r i v a t e : 23 Ui : : D i a l o g R e n o m e a r u i ; 24 string atributo ; 25 26 p r i v a t e s l o t s : 27 void renomearClique ( ) ; 28 29 s i g n a l s : 30 v o i d renomear ( c o n s t s t r i n g &, 31 } ; 32 33 #e n d i f // DIALOG RENOMEAR H const s t r i n g &) ; Listagem B.57: dialog renomear.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g R e n o m e a r </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g R e n o m e a r ”> 5 <p r o p e r t y name=” e n a b l e d ”> 6 <b o o l >t r u e </b o o l > 7 </ p r o p e r t y > 8 <p r o p e r t y name=” g e o m e t r y ”> 9 <r e c t > 10 <x>0</x> 11 <y>0</y> 12 <width >360</width> 13 <h e i g h t >140</ h e i g h t > 14 </ r e c t > 15 </ p r o p e r t y > 16 <p r o p e r t y name=” s i z e P o l i c y ”> 17 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” P r e f e r r e d ”> 18 <h o r s t r e t c h >0</ h o r s t r e t c h > 19 <v e r s t r e t c h >0</ v e r s t r e t c h > 20 </ s i z e p o l i c y > 21 </ p r o p e r t y > 22 <p r o p e r t y name=” minimumSize ”> 23 <s i z e > 24 <width >360</width> 25 <h e i g h t >140</ h e i g h t > 26 </ s i z e > 27 </ p r o p e r t y > 28 <p r o p e r t y name=” maximumSize ”> 29 <s i z e > 30 <width >360</width> 31 <h e i g h t >140</ h e i g h t > 32 </ s i z e > 33 </ p r o p e r t y > 34 <p r o p e r t y name=” w i n d o w T i t l e ”> 35 <s t r i n g >Renomear A t r i b u t o </ s t r i n g > 36 </ p r o p e r t y > 37 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 3 ”> 38 <i t e m> 39 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> 40 <i t e m> 41 <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> 42 <p r o p e r t y name=” t i t l e ”> 43 <s t r i n g >Renomear A t r i b u t o </ s t r i n g > 44 </ p r o p e r t y > 45 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 46 <i t e m> 47 <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> 48 <i t e m row=” 0 ” column=” 0 ”> 49 <w i d g e t c l a s s =” QLabel ” name=” l a b e l N o m e A t u a l ”> 50 <p r o p e r t y name=” t e x t ”> 51 <s t r i n g >Nome A t u a l : </ s t r i n g > 52 </ p r o p e r t y > 53 </w i d g e t > 54 </i t e m> 55 <i t e m row=” 0 ” column=” 1 ”> 56 <w i d g e t c l a s s =” QLabel ” name=” l a b e l N o m e A t u a l E d i t ”> 57 <p r o p e r t y name=” t e x t ”> 58 <s t r i n g >nomeAtual </ s t r i n g > 198 59 </ p r o p e r t y > 60 </w i d g e t > 61 </i t e m> 62 <i t e m row=” 1 ” column=” 0 ”> 63 <w i d g e t c l a s s =” QLabel ” name=” labelNovoNome ”> 64 <p r o p e r t y name=” t e x t ”> 65 <s t r i n g >Novo nome: </ s t r i n g > 66 </ p r o p e r t y > 67 </w i d g e t > 68 </i t e m> 69 <i t e m row=” 1 ” column=” 1 ”> 70 <w i d g e t c l a s s =” Q L i n e E d i t ” name=” l i n e E d i t N o v o N o m e ”/> 71 </i t e m> 72 </ l a y o u t > 73 </i t e m> 74 </ l a y o u t > 75 </w i d g e t > 76 </i t e m> 77 <i t e m> 78 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 79 <i t e m> 80 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 81 <p r o p e r t y name=” o r i e n t a t i o n ”> 82 <enum>Qt : : H o r i z o n t a l </enum> 83 </ p r o p e r t y > 84 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 85 <s i z e > 86 <width >40</width> 87 <h e i g h t >20</ h e i g h t > 88 </ s i z e > 89 </ p r o p e r t y > 90 </ s p a c e r > 91 </i t e m> 92 <i t e m> 93 <w i d g e t c l a s s =” QPushButton ” name=” pushButtonRenomear ”> 94 <p r o p e r t y name=” t e x t ”> 95 <s t r i n g >Renomear</ s t r i n g > 96 </ p r o p e r t y > 97 </w i d g e t > 98 </i t e m> 99 <i t e m> 100 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a n c e l a r ”> 101 <p r o p e r t y name=” e n a b l e d ”> 102 <b o o l >t r u e </b o o l > 103 </ p r o p e r t y > 104 <p r o p e r t y name=” t e x t ”> 105 <s t r i n g >C a n c e l a r </ s t r i n g > 106 </ p r o p e r t y > 107 </w i d g e t > 108 </i t e m> 109 </ l a y o u t > 110 </i t e m> 111 </ l a y o u t > 112 </i t e m> 113 </ l a y o u t > 114 </w i d g e t > 115 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 116 < r e s o u r c e s /> 117 <c o n n e c t i o n s /> 118 </u i > Listagem B.58: dialog renomear.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #i n c l u d e ” d i a l o g s u b s t q u a l . h” #i n c l u d e #i n c l u d e ” t a b e l a r e g i s t r o s . h” ” p o p u l a d o r . h” #i n c l u d e <QMessageBox> #i n c l u d e <QDebug> DialogSubstQual : : DialogSubstQual ( c o n s t v e c t o r <s t r i n g > &c a t e g o r i a s A t r i b u t o Q u a l i t a t i v o , c o n s t s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t ) : QDialog ( p a r e n t ) { ui . setupUi ( t h i s ) ; 199 17 18 atributo = atributo ; w i d g e t C a t e g o r i a s Q u a l = new W i d g e t C a t e g o r i a s Q u a l ( a t r i b u t o , u i . widgetLocalizar ) ; u i . w i d g e t L o c a l i z a r −>l a y o u t ( )−>addWidget ( w i d g e t C a t e g o r i a s Q u a l ) ; 19 20 21 22 23 24 25 26 u i . l a b e l A t r i b u t o −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( c o n n e c t ( u i . p u s h B u t t o n S u b s t i t u i r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( subtituirClique () ) ) ; c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( r e j e c t ( ) ) ) ; c o n n e c t ( u i . r a d i o B u t t o n L o c a l i z a r , SIGNAL ( t o g g l e d ( b o o l ) ) , w i d g e t C a t e g o r i a s Q u a l , SLOT( s e t E n a b l e d ( b o o l ) ) ) ; c o n n e c t ( u i . r a d i o B u t t o n V a l o r E x i s t e n t e , SIGNAL ( t o g g l e d ( b o o l ) ) , u i . comboBoxSubstPor , SLOT( s e t E n a b l e d ( b o o l ) ) ) ; c o n n e c t ( u i . r a d i o B u t t o n N o v o V a l o r , SIGNAL ( t o g g l e d ( b o o l ) ) , u i . l i n e E d i t N o v o V a l o r , SLOT( s e t E n a b l e d ( b o o l ) ) ) ; 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 atributo . c str () ) ) ; w i d g e t C a t e g o r i a s Q u a l −>s e t E n a b l e d ( f a l s e ) ; w i d g e t C a t e g o r i a s Q u a l −>s e t H a b i l i t a d o C o m b o B o x A t r i b u t o s ( f a l s e ) ; P o p u l a d o r : : populeComboBox ( u i . comboBoxSubstPor , categoriasAtributoQualitativo ) ; s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; } DialogSubstQual : : ˜ DialogSubstQual ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } void { DialogSubstQual : : somenteDestacados ( const ui ui ui ui . . . . bool ok ) r a d i o B u t t o n L o c a l i z a r −>s e t E n a b l e d ( ! ok ) ; r a d i o B u t t o n M i s s i n g −>s e t E n a b l e d ( ! ok ) ; r a d i o B u t t o n T o d o s−>s e t E n a b l e d ( ! ok ) ; r a d i o B u t t o n L o c a l i z a r −>s e t E n a b l e d ( ! ok ) ; u i . r a d i o B u t t o n D e s t a c a d o s −>s e t C h e c k e d ( ok ) ; u i . r a d i o B u t t o n D e s t a c a d o s −>s e t E n a b l e d ( ok ) ; } s t r i n g DialogSubstQual : : getNovoValor ( ) { s t r i n g novoValor = ”” ; if { const ( u i . r a d i o B u t t o n V a l o r E x i s t e n t e −>i s C h e c k e d ( ) ) n o v o V a l o r = u i . comboBoxSubstPor−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; } else { if ( u i . r a d i o B u t t o n N o v o V a l o r−>i s C h e c k e d ( ) ) n o v o V a l o r = u i . l i n e E d i t N o v o V a l o r −>t e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; } return novoValor ; } void { DialogSubstQual : : s u b t i t u i r C l i q u e ( ) bool sucesso = true ; const string valorNovoStr = getNovoValor ( ) ; V a l o r B a s e ∗ v a l o r N o v o = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>g e r a r V a l o r ( atributo , valorNovoStr ) ; v e c t o r <V a l o r B a s e ∗ c o n s t > v a l o r e s A n t i g o s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; if { ( u i . r a d i o B u t t o n M i s s i n g −>i s C h e c k e d ( ) ) emit } else { if emit } else { if substituaMissings ( atributo , valorNovo ) ; ( u i . r a d i o B u t t o n T o d o s−>i s C h e c k e d ( ) ) substituaTodos ( atributo , valorNovo ) ; ( u i . r a d i o B u t t o n L o c a l i z a r −>i s C h e c k e d ( ) ) w i d g e t C a t e g o r i a s Q u a l −>o b t e r S e l e c i o n a d o s ( v a l o r e s A n t i g o s ) ; 200 91 92 93 94 if { ( ! v a l o r e s A n t i g o s . empty ( ) ) 95 96 b o o l m is s i n g s T m b = w i d g e t C a t e g o r i a s Q u a l −> considerarMissings () ; emit substituaLocalizados ( atributo , missingsTmb , f a l s e ) ; valoresAntigos , valorNovo , } else { 97 98 99 100 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e p e l o menos um v a l o r p a r a ser localizado ! ”) ) ; sucesso = f a l s e ; 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 const } } else { ( u i . r a d i o B u t t o n D e s t a c a d o s −>i s C h e c k e d ( ) ) if emit substituaDestacados ( atributo , valorNovo ) ; } d e l e t e valorNovo ; f o r ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r valoresAntigos . cbegin () ; c i t V a l o r A n t i g o != v a l o r e s A n t i g o s . c e n d ( ) ; c i t V a l o r A n t i g o ++) { delete ∗citValorAntigo ; } if { citValorAntigo = ( sucesso ) accept () ; } } Listagem B.59: dialog subst qual.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #i f n d e f DIALOG SUBST QUAL H #d e f i n e DIALOG SUBST QUAL H #i n c l u d e ” u i d i a l o g s u b s t q u a l . h” #i n c l u d e ” w i d g e t c a t e g o r i a s q u a l . h” using namespace std ; c l a s s DialogSubstQual { Q OBJECT : public QDialog public : DialogSubstQual ( c o n s t v e c t o r <s t r i n g > &c a t e g o r i a s A t r i b u t o Q u a l i t a t i v o , c o n s t s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t = 0 ) ; ˜ DialogSubstQual ( ) ; void somenteDestacados ( const bool ok ) ; private : Ui : : D i a l o g S u b s t Q u a l u i ; WidgetCategoriasQual ∗ widgetCategoriasQual ; string atributo ; string getNovoValor ( ) const ; private slots : void s u b t i t u i r C l i q u e () ; signals : void void void void }; s u b s t i t u a M i s s i n g s ( c o n s t s t r i n g &, ValorBase ∗ c o n s t ) ; s u b s t i t u a T o d o s ( c o n s t s t r i n g &, ValorBase ∗) ; s u b s t i t u a D e s t a c a d o s ( c o n s t s t r i n g &, ValorBase ∗) ; s u b s t i t u a L o c a l i z a d o s ( c o n s t s t r i n g & , c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, V a l o r B a s e ∗ c o n s t , c o n s t b o o l missingsTmb , c o n s t b o o l invalidosTmb ) ; 201 39 40 #e n d i f // DIALOG SUBST QUAL H Listagem B.60: dialog subst qual.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g S u b s t Q u a l </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g S u b s t Q u a l ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >376</width> 10 <h e i g h t >445</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >S u b s t i t u i r Q u a l i t a t i v o </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> 17 <i t e m> 18 <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t 2 ”> 19 <i t e m row=” 0 ” column=” 0 ”> 20 <w i d g e t c l a s s =” QLabel ” name=” l a b e l ”> 21 <p r o p e r t y name=” t e x t ”> 22 <s t r i n g >A t r i b u t o : </ s t r i n g > 23 </ p r o p e r t y > 24 </w i d g e t > 25 </i t e m> 26 <i t e m row=” 0 ” column=” 1 ”> 27 <w i d g e t c l a s s =” QLabel ” name=” l a b e l A t r i b u t o ”> 28 <p r o p e r t y name=” t e x t ”> 29 <s t r i n g >T e x t L a b e l </ s t r i n g > 30 </ p r o p e r t y > 31 </w i d g e t > 32 </i t e m> 33 </ l a y o u t > 34 </i t e m> 35 <i t e m> 36 <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> 37 <p r o p e r t y name=” t i t l e ”> 38 <s t r i n g >S u b s t i t u i r V a l o r e s </ s t r i n g > 39 </ p r o p e r t y > 40 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 41 <i t e m> 42 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 43 <i t e m> 44 <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n M i s s i n g ”> 45 <p r o p e r t y name=” t e x t ”> 46 <s t r i n g >M i s s i n g s </ s t r i n g > 47 </ p r o p e r t y > 48 <p r o p e r t y name=” c h e c k e d ”> 49 <b o o l >t r u e </b o o l > 50 </ p r o p e r t y > 51 </w i d g e t > 52 </i t e m> 53 <i t e m> 54 <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n T o d o s ”> 55 <p r o p e r t y name=” t e x t ”> 56 <s t r i n g >Todos</ s t r i n g > 57 </ p r o p e r t y > 58 </w i d g e t > 59 </i t e m> 60 <i t e m> 61 <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n L o c a l i z a r ”> 62 <p r o p e r t y name=” t e x t ”> 63 <s t r i n g >L o c a l i z a r </ s t r i n g > 64 </ p r o p e r t y > 65 </w i d g e t > 66 </i t e m> 67 <i t e m> 68 <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n D e s t a c a d o s ”> 69 <p r o p e r t y name=” e n a b l e d ”> 70 <b o o l >t r u e </b o o l > 71 </ p r o p e r t y > 72 <p r o p e r t y name=” t e x t ”> 73 <s t r i n g >D e s t a c a d o s </ s t r i n g > 74 </ p r o p e r t y > 202 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 </w i d g e t > </i t e m> </ l a y o u t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QWidget ” name=” w i d g e t L o c a l i z a r ” n a t i v e=” t r u e ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” Expanding ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 3 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 2 ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >0</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >S u b s t i t u i r p o r : </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n V a l o r E x i s t e n t e ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >V a l o r e x i s t e n t e : </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” c h e c k e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =”QComboBox” name=” comboBoxSubstPor ”/> </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n N o v o V a l o r ”> <p r o p e r t y name=” e n a b l e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Novo v a l o r : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =” Q L i n e E d i t ” name=” l i n e E d i t N o v o V a l o r ”> <p r o p e r t y name=” e n a b l e d ”> <b o o l >f a l s e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> 203 157 </ p r o p e r t y > 158 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 159 <s i z e > 160 <width >40</width> 161 <h e i g h t >20</ h e i g h t > 162 </ s i z e > 163 </ p r o p e r t y > 164 </ s p a c e r > 165 </i t e m> 166 <i t e m> 167 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n S u b s t i t u i r ”> 168 <p r o p e r t y name=” t e x t ”> 169 <s t r i n g >S u b s t i t u i r </ s t r i n g > 170 </ p r o p e r t y > 171 </w i d g e t > 172 </i t e m> 173 <i t e m> 174 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a n c e l a r ”> 175 <p r o p e r t y name=” t e x t ”> 176 <s t r i n g >C a n c e l a r </ s t r i n g > 177 </ p r o p e r t y > 178 </w i d g e t > 179 </i t e m> 180 </ l a y o u t > 181 </i t e m> 182 </ l a y o u t > 183 </w i d g e t > 184 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 185 < r e s o u r c e s /> 186 <c o n n e c t i o n s /> 187 </u i > Listagem B.61: dialog subst qual.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #i n c l u d e ” d i a l o g s u b s t q u a n t . h” #i n c l u d e <Q D o u b l e V a l i d a t o r > #i n c l u d e <QMessageBox> #i n c l u d e <QDebug> #i n c l u d e #i n c l u d e #i n c l u d e ” u t i l i d a d e s . h” ” c o l e t o r e s t a t i s t i c a s . h” ” p o p u l a d o r . h” DialogSubstQuant : : DialogSubstQuant ( c o n s t s t r i n g &a t r i b u t o , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s Q u a n t , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b Q u a n t , QWidget ∗ p a r e n t ) : QDialog ( p a r e n t ) , atributo ( atributo ) , w i d g e t E s c o l h e r D P (NULL) { ui . setupUi ( t h i s ) ; const C o l e t o r E s t a t i s t i c a s : : EstatisticaQuant &e s t a t i s t i c a = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> estatisticaAtributoQuantitativo ( atributo ) ; m e d i a = e s t a t i s t i c a . media ; u i . l a b e l A t r i b u t o −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( atributo . c str () ) ) ; u i . r a d i o B u t t o n M i s s i n g −>s e t C h e c k e d ( t r u e ) ; u i . r a d i o B u t t o Z e r o −>s e t C h e c k a b l e ( t r u e ) ; if { ( isnan ( media ) ) u i . r a d i o B u t t o n M e d i a−>s e t E n a b l e d ( f a l s e ) ; } c o n s t v e c t o r <s t r i n g > &a t r i b u t o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ; P o p u l a d o r : : populeComboBox ( u i . c o m b o B o x A t r i b u t o M e d P a r c i a l , a t r i b u t o s ) ; const s i z e t indiceAtributoDP = std : : fin d ( atributosQuant . begin () , a t r i b u t o s Q u a n t . end ( ) , a t r i b u t o ) − a t r i b u t o s Q u a n t . b e g i n ( ) ; v e c t o r <s i z e t > &i n d i c e s V a l i d o s D P = i n d i c e s V a l i d o s P o r A t r i b Q u a n t [ indiceAtributoDP ] ; 37 const 38 39 40 setupIntervalosLocalizar () ; setupMediaParcial () ; 204 41 42 43 44 setupRLS ( a t r i b u t o s Q u a n t , i n d i c e s V a l i d o s P o r A t r i b Q u a n t ) ; setupEscolherDP ( indicesValidosDP ) ; c o n n e c t ( u i . c o m b o B o x A t r i b u t o M e d P a r c i a l , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , t h i s , SLOT( currentIndexChangedComboBoxAtributoMedParcial ( ) ) ) ; c o n n e c t ( u i . r a d i o B u t t o n I n t e r v a l o P a r a S u b s , SIGNAL ( t o g g l e d ( b o o l ) ) , u i . g r o u p B o x I n t e r v a l o s S u b s t , SLOT( s e t V i s i b l e ( b o o l ) ) ) ; 45 46 47 c o n n e c t ( u i . r a d i o B u t t o Z e r o , SIGNAL ( c l i c k e d ( b o o l ) ) , t h i s , SLOT( radioButtonAlterado () ) ) ; c o n n e c t ( u i . r a d i o B u t t o n M e d i a , SIGNAL ( c l i c k e d ( b o o l ) ) , t h i s , SLOT( radioButtonAlterado () ) ) ; c o n n e c t ( u i . r a d i o B u t t o n M e d i a P a r c i a l , SIGNAL ( c l i c k e d ( b o o l ) ) , t h i s , SLOT( radioButtonAlterado () ) ) ; c o n n e c t ( u i . radioButtonDP , SIGNAL ( c l i c k e d ( b o o l ) ) , t h i s , SLOT( radioButtonAlterado () ) ) ; c o n n e c t ( u i . r a d i o B u t t o n R L S , SIGNAL ( c l i c k e d ( b o o l ) ) , t h i s , SLOT( radioButtonAlterado () ) ) ; 48 49 50 51 52 53 c o n n e c t ( u i . p u s h B u t t o n C a l c M e d i a P a r c i a l , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( calcularMediaParcialClique () ) ) ; c o n n e c t ( u i . p u s h B u t t o n S u b s t i t u i r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( subtituirClique () ) ) ; c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( r e j e c t ( ) ) ) ; 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 s e t W i n d o w F l a g s ( w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint ) ; radioButtonAlterado () ; currentIndexChangedComboBoxAtributoMedParcial ( ) ; } DialogSubstQuant : : ˜ DialogSubstQuant ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } void { . . . . bool ok ) r a d i o B u t t o n I n t e r v a l o P a r a S u b s −>s e t E n a b l e d ( ! ok ) ; r a d i o B u t t o n M i s s i n g −>s e t E n a b l e d ( ! ok ) ; r a d i o B u t t o n T o d o s−>s e t E n a b l e d ( ! ok ) ; r a d i o B u t t o n I n v a l i d o s −>s e t E n a b l e d ( ! ok ) ; u i . r a d i o B u t t o n D e s t a c a d o s −>s e t C h e c k e d ( ok ) ; u i . r a d i o B u t t o n D e s t a c a d o s −>s e t E n a b l e d ( ok ) ; } void { DialogSubstQuant : : radioButtonAlterado ( ) u i . s t a c k e d W i d g e t M e d i a P a r c i a l D p R L S−>s e t V i s i b l e ( u i . r a d i o B u t t o n M e d i a P a r c i a l −>i s C h e c k e d ( ) | | u i . radioButtonDP−> i s C h e c k e d ( ) | | u i . r a d i o B u t t o n R L S−>i s C h e c k e d ( ) ) ; u i . d o u b l e S p i n B o x V a l o r−>s e t E n a b l e d ( ! u i . radioButtonDP−>i s C h e c k e d ( ) ) ; 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 DialogSubstQuant : : somenteDestacados ( const ui ui ui ui if { ( u i . r a d i o B u t t o Z e r o −>i s C h e c k e d ( ) ) u i . d o u b l e S p i n B o x V a l o r−>s e t V a l u e ( 0 ) ; } else { if ( u i . r a d i o B u t t o n M e d i a−>i s C h e c k e d ( ) ) u i . d o u b l e S p i n B o x V a l o r−>s e t V a l u e ( m e d i a ) ; } else { if ( u i . r a d i o B u t t o n M e d i a P a r c i a l −>i s C h e c k e d ( ) ) u i . s t a c k e d W i d g e t M e d i a P a r c i a l D p R L S−>s e t C u r r e n t W i d g e t ( u i . pageMediaParcial ) ; } else { if ( u i . radioButtonDP−>i s C h e c k e d ( ) ) u i . s t a c k e d W i d g e t M e d i a P a r c i a l D p R L S−>s e t C u r r e n t W i d g e t ( u i . pageDP ) ; } else { if ( u i . r a d i o B u t t o n R L S−>i s C h e c k e d ( ) ) u i . s t a c k e d W i d g e t M e d i a P a r c i a l D p R L S−>s e t C u r r e n t W i d g e t ( u i . pageRLS ) ; } } void { DialogSubstQuant : : s e t u p I n t e r v a l o s L o c a l i z a r ( ) 205 109 w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r = new W i d g e t I n t e r v a l o s Q u a n t ( atributo , ui . groupBoxIntervalosSubst ) ; w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −>s e t V i s i b i l i d a d e C o m b o A t r i b u t o s ( f a l s e ) ; // é e s c o n d i d o p o i s s ó é c o n s i d e r a d o o a t r i b u t o que s e q u e r substituir u i . g r o u p B o x I n t e r v a l o s S u b s t −>l a y o u t ( )−>addWidget ( widgetIntervalosQuantParaSubstituir ) ; u i . g r o u p B o x I n t e r v a l o s S u b s t −>s e t V i s i b l e ( u i . r a d i o B u t t o n I n t e r v a l o P a r a S u b s −>i s C h e c k e d ( ) ) ; 110 111 112 113 114 115 116 117 } void { 118 const 119 120 122 123 124 125 126 127 128 } 129 130 { 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; v e c t o r <s t r i n g > a t r i b u t o s Q u a l = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a l i t a t i v o s ( ) ; w i d g e t I n t e r v a l o s Q u a n t M e d i a P a r c i a l = new W i d g e t I n t e r v a l o s Q u a n t ( a t r i b u t o s Q u a n t , u i . s t a c k e d W i d g e t I n t e r v a l o s M e d i a P a r c i a l −>w i d g e t ( 0 ) ) ; w i d g e t I n t e r v a l o s Q u a n t M e d i a P a r c i a l −>s e t V i s i b i l i d a d e C o m b o A t r i b u t o s ( f a l s e ) ; // é e s c o n d i d o p o i s e s t a j a n e l a j a tem uma combo com o s atributos w i d g e t C a t e g o r i a s M e d i a P a r c i a l = new W i d g e t C a t e g o r i a s Q u a l ( a t r i b u t o s Q u a l , u i . s t a c k e d W i d g e t I n t e r v a l o s M e d i a P a r c i a l −>w i d g e t ( 1 ) ) ; w i d g e t C a t e g o r i a s M e d i a P a r c i a l −>s e t V i s i b i l i d a d e C o m b o A t r i b u t o s ( f a l s e ) ; // é e s c o n d i d o p o i s e s t a j a n e l a j a tem uma combo com o s a t r i b u t o s u i . s t a c k e d W i d g e t I n t e r v a l o s M e d i a P a r c i a l −>w i d g e t ( 0 )−>l a y o u t ( )−>addWidget ( widgetIntervalosQuantMediaParcial ) ; u i . s t a c k e d W i d g e t I n t e r v a l o s M e d i a P a r c i a l −>w i d g e t ( 1 )−>l a y o u t ( )−>addWidget ( widgetCategoriasMediaParcial ) ; 121 131 132 133 134 DialogSubstQuant : : setupMediaParcial ( ) const void D i a l o g S u b s t Q u a n t : : setupRLS ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s R L S , v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s R L S ) const w i d g e t R e g r e s s a o L i n e a r S i m p l e s = new W i d g e t R e g r e s s a o L i n e a r S i m p l e s ( a t r i b u t o , atributosRLS , indicesValidosRLS , t h i s ) ; u i . groupBoxRLS−>l a y o u t ( )−>addWidget ( w i d g e t R e g r e s s a o L i n e a r S i m p l e s ) ; } void DialogSubstQuant : : setupEscolherDP ( const indicesValidosDP ) v e c t o r <s i z e t > & { w i d g e t E s c o l h e r D P = new W i d g e t E s c o l h e r D P ( a t r i b u t o , i n d i c e s V a l i d o s D P , W i d g e t E s c o l h e r D P : : Opcao : : NADA, t h i s ) ; u i . groupBoxDP−>l a y o u t ( )−>addWidget ( w i d g e t E s c o l h e r D P ) ; } void { DialogSubstQuant : : substituaComValor ( ) if ( u i . r a d i o B u t t o n M e d i a P a r c i a l −>i s C h e c k e d ( ) && ! calcularMediaParcialClique () ) { return ; } bool sucesso = f a l s e ; const string data ( ) ; n o v o V a l o r S t r = u i . d o u b l e S p i n B o x V a l o r−>t e x t ( ) . t o L a t i n 1 ( ) . V a l o r B a s e ∗ n o v o V a l o r = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>g e r a r V a l o r ( atributo , novoValorStr ) ; if { ( u i . r a d i o B u t t o n M i s s i n g −>i s C h e c k e d ( ) ) emit s u b s t i t u a M i s s i n g s ( a t r i b u t o , sucesso = true ; } else { if ( u i . r a d i o B u t t o n T o d o s−>i s C h e c k e d ( ) ) emit substituaTodos ( a t r i b u t o , sucesso = true ; } else { if novoValor ) ; ( u i . r a d i o B u t t o n I n v a l i d o s −>i s C h e c k e d ( ) ) emit s u b s t i t u a I n v a l i d o s ( a t r i b u t o , sucesso = true ; } else if novoValor ) ; novoValor ) ; ( u i . r a d i o B u t t o n I n t e r v a l o P a r a S u b s −>i s C h e c k e d ( ) ) 206 { 169 170 const 171 const 172 173 v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > i n t e r v a l o s = v e c t o r < T a b e l a D e R e g i s t r o s : : I n t e r v a l o >() ; w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −>g e r a r I n t e r v a l o s ( i n t e r v a l o s ) ; 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 substituaIntervalos ( atributo , missingsTmb , i n v a l i d o s T m b ) ; sucesso = true ; emit } else { novoValor , intervalos , ( u i . r a d i o B u t t o n D e s t a c a d o s −>i s C h e c k e d ( ) ) if emit s u b s t i t u a D e s t a c a d o s ( a t r i b u t o , sucesso = true ; novoValor ) ; } delete if { novoValor ; ( sucesso ) accept () ; } } void { D i a l o g S u b s t Q u a n t : : substituaComDP ( ) QMessageBox m s g Q u e s t i o n ( QMessageBox : : Q u e s t i o n , ” A v i s o ” , Q S t r i n g : : fromLatin1 ( ” Você s e l e c i o n o u o modo de s u b s t i t u i ç ã o p o r uma d i s t r i b u i ç ã o de p r o b a b i l i d a d e . \ n” ”Os v a l o r e s s e r ã o g e r a d o s a l e a t ó r i a m e n t e de a c o r d o com a d i s t r i b u i c a o a t i v a . \ n” ” D e s e j a c o n t i n u a r mesmo a s s i m ? ” ) , QMessageBox : : Yes | QMessageBox : : No , this ) ; m s g Q u e s t i o n . b u t t o n ( QMessageBox : : Yes )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Sim ” )); m s g Q u e s t i o n . b u t t o n ( QMessageBox : : No )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ”Não” ) ); 196 197 198 199 200 201 202 const 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 if { D i s t r i b u i c a o &d i s t r i b u i c a o = () ; w i d g e t E s c o l h e r D P −>d i s t r i b u i c a o A t u a l ( u i . r a d i o B u t t o n M i s s i n g −>i s C h e c k e d ( ) ) emit } else { if substituaMissingsDP ( atributo , if substituaTodosDP ( a t r i b u t o , if substituaInvalidosDP ( atributo , distribuicao ) ; ( u i . r a d i o B u t t o n I n t e r v a l o P a r a S u b s −>i s C h e c k e d ( ) ) const const 220 221 distribuicao ) ; ( u i . r a d i o B u t t o n I n v a l i d o s −>i s C h e c k e d ( ) ) emit } else { distribuicao ) ; ( u i . r a d i o B u t t o n T o d o s−>i s C h e c k e d ( ) ) emit } else { 219 w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −> b o o l m i s si n g s T m b = considerarMissings () ; bool invalidosTmb = w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −> considerarInvalidos () ; v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > i n t e r v a l o s = v e c t o r < T a b e l a D e R e g i s t r o s : : I n t e r v a l o >() ; w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −>g e r a r I n t e r v a l o s ( i n t e r v a l o s ) ; 222 223 224 225 226 227 228 229 230 231 232 233 234 235 b o o l m i s si n g s T m b = w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −> considerarMissings () ; w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −> bool invalidosTmb = considerarInvalidos () ; emit } else { if substituaIntervaloDP ( atributo , missingsTmb , i n v a l i d o s T m b ) ; intervalos , ( u i . r a d i o B u t t o n D e s t a c a d o s −>i s C h e c k e d ( ) ) emit substituaDestacadosDP ( atributo , } accept () ; return ; } void distribuicao , D i a l o g S u b s t Q u a n t : : substituaComRLS ( ) distribuicao ) ; 207 236 237 { c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o = widgetRegressaoLinearSimples −>r e g r e s s a o L i n e a r S i m p l e s ( ) ; w i d g e t R e g r e s s a o L i n e a r S i m p l e s −>a t r i b u t o I n d e p const string atributoInd = () ; 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 if { ( u i . r a d i o B u t t o n M i s s i n g −>i s C h e c k e d ( ) ) emit } else { if if atributoInd , regressao ) ; substituaTodosRLS ( a t r i b u t o , atributoInd , regressao ) ; ( u i . r a d i o B u t t o n I n v a l i d o s −>i s C h e c k e d ( ) ) emit } else { substituaInvalidosRLS ( atributo , atributoInd , regressao ) ; ( u i . r a d i o B u t t o n I n t e r v a l o P a r a S u b s −>i s C h e c k e d ( ) ) const const 256 257 b o o l m i s s in g s T m b = w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −> considerarMissings () ; bool invalidosTmb = w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −> considerarInvalidos () ; v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > i n t e r v a l o s = v e c t o r < T a b e l a D e R e g i s t r o s : : I n t e r v a l o >() ; w i d g e t I n t e r v a l o s Q u a n t P a r a S u b s t i t u i r −>g e r a r I n t e r v a l o s ( i n t e r v a l o s ) ; 258 259 260 emit } else { if substituaIntervaloRLS ( atributo , atributoInd , i n t e r v a l o s , missingsTmb , i n v a l i d o s T m b ) ; regressao , ( u i . r a d i o B u t t o n D e s t a c a d o s −>i s C h e c k e d ( ) ) emit substituaDestacadosRLS ( atributo , atributoInd , regressao ) ; } accept () ; return ; } void { DialogSubstQuant : : s u b t i t u i r C l i q u e ( ) if { ( u i . radioButtonDP−>i s C h e c k e d ( ) ) substituaComDP ( ) ; } else { if ( u i . r a d i o B u t t o n R L S−>i s C h e c k e d ( ) ) substituaComRLS ( ) ; } else { substituaComValor ( ) ; } } void { DialogSubstQuant : : currentIndexChangedComboBoxAtributoMedParcial ( ) const 290 291 292 293 if { s t r i n g a t r i b u t o S e l e c i o a n d o = u i . c o m b o B o x A t r i b u t o M e d P a r c i a l−> currentText ( ) . t oLa tin 1 ( ) . data ( ) ; ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>ehQuant ( a t r i b u t o S e l e c i o a n d o ) ) w i d g e t I n t e r v a l o s Q u a n t M e d i a P a r c i a l −> setAtributoAtualComboBoxAtributos ( a t r i b u t o S e l e c i o a n d o ) ; u i . s t a c k e d W i d g e t I n t e r v a l o s M e d i a P a r c i a l −>s e t C u r r e n t W i d g e t ( u i . pageQuant ) ; 294 } else { 295 296 297 298 w i d g e t C a t e g o r i a s M e d i a P a r c i a l −>s e t A t r i b u t o A t u a l C o m b o B o x A t r i b u t o s ( atributoSelecioando ) ; u i . s t a c k e d W i d g e t I n t e r v a l o s M e d i a P a r c i a l −>s e t C u r r e n t W i d g e t ( u i . pageQuali ) ; 299 300 301 302 303 304 305 substituaMissingsRLS ( atributo , ( u i . r a d i o B u t t o n T o d o s−>i s C h e c k e d ( ) ) emit } else { 255 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 if } } bool { DialogSubstQuant : : c a l c u l a r M e d i a P a r c i a l C l i q u e ( ) const s t r i n g a t r i b u t o M e d i a P a r c i a l = u i . c o m b o B o x A t r i b u t o M e d P a r c i a l−> currentText ( ) . t oLa tin 1 ( ) . data ( ) ; 208 306 307 308 309 double if { 310 311 312 313 314 v e c t o r <V a l o r B a s e ∗ c o n s t > s e l e c i o n a d o s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; w i d g e t C a t e g o r i a s M e d i a P a r c i a l −>o b t e r S e l e c i o n a d o s ( s e l e c i o n a d o s ) ; media = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> calcMediaParcialBaseadoValores ( atributo , atributoMediaParcial , selecionados ) ; 315 316 for 317 318 319 320 321 322 323 324 325 ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r selecionados . cbegin () ; c i t S e l e c i o n a d o != s e l e c i o n a d o s . c e n d ( ) ; c i t S e l e c i o n a d o ++) citSelecionado = { delete ∗citSelecionado ; } } else { v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > i n t e r v a l o s = v e c t o r < T a b e l a D e R e g i s t r o s : : I n t e r v a l o >() ; 326 327 328 w i d g e t I n t e r v a l o s Q u a n t M e d i a P a r c i a l −>g e r a r I n t e r v a l o s ( i n t e r v a l o s ) ; media = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> calcMediaParcialBaseadoIntervalos ( atributo , atributoMediaParcial , intervalos ) ; } 329 330 331 332 333 334 335 336 337 338 339 340 341 342 media = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( atributoMediaParcial ) ) if { ( i s n a n ( media ) ) QMessageBox : : w a r n i n g (NULL, f r o m L a t i n 1 ( ”Não f o r a m média móvel ! ” ) ) ; return f a l s e ; QString : : fromLatin1 ( ” Aviso ” ) , QString : : e n c o n t r a d o r v a l o r e s p a r a c á l c u l o da } else { u i . d o u b l e S p i n B o x V a l o r−>s e t V a l u e ( media ) ; } return true ; } Listagem B.62: dialog subst quant.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #i f n d e f DIALOG SUBST QUANT H #d e f i n e DIALOG SUBST QUANT H #i n c l u d e ” u i d i a l o g s u b s t q u a n t . h” #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e ” widget ” widget ” widget ” widget using namespace c a t e g o r i a s q u a l . h” i n t e r v a l o s q u a n t . h” e s c o l h e r d p . h” r e g r e s s a o l i n e a r s i m p l e s . h” std ; c l a s s DialogSubstQuant { Q OBJECT : public QDialog public : DialogSubstQuant ( c o n s t s t r i n g &a t r i b u t o , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s Q u a n t , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b Q u a n t , QWidget ∗ p a r e n t = 0 ) ; ˜ DialogSubstQuant ( ) ; void somenteDestacados ( const bool ok ) ; private : Ui : : A n a l i s e E d i c a o D a d o s S u b s t u i ; WidgetCategoriasQual ∗ widgetCategoriasMediaParcial ; WidgetIntervalosQuant ∗ widgetIntervalosQuantMediaParcial ; 209 31 32 33 34 35 36 37 38 39 WidgetIntervalosQuant ∗ widgetIntervalosQuantParaSubstituir ; WidgetRegressaoLinearSimples ∗ widgetRegressaoLinearSimples ; WidgetEscolherDP ∗ w i d g e t E s c o l h e r D P ; atributo ; string double media ; 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 void setupIntervalosLocalizar () ; setupMediaParcial () ; setupRLS ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s R L S , c o n s t v e c t o r <v e c t o r < s i z e t >> &i n d i c e s V a l i d o s R L S ) ; s e t u p E s c o l h e r D P ( c o n s t v e c t o r <s i z e t > &i n d i c e s V a l i d o s D P ) ; void void void substituaComRLS ( ) ; substituaComDP ( ) ; substituaComValor ( ) ; 58 59 60 61 62 63 64 65 66 67 68 69 70 void void void private slots : void s u b t i t u i r C l i q u e () ; void radioButtonAlterado () ; void currentIndexChangedComboBoxAtributoMedParcial ( ) ; bool calcularMediaParcialClique () ; signals : void void void void void void void void void void s u b s t i t u a M i s s i n g s ( c o n s t s t r i n g &, ValorBase ∗ c o n s t ) ; s u b s t i t u a T o d o s ( c o n s t s t r i n g &, ValorBase ∗ c o n s t ) ; s u b s t i t u a I n v a l i d o s ( c o n s t s t r i n g &, ValorBase ∗ c o n s t ) ; s u b s t i t u a I n t e r v a l o s ( c o n s t s t r i n g &, ValorBase ∗ c o n s t , c o n s t T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t b o o l , c o n s t b o o l ) ; s u b s t i t u a D e s t a c a d o s ( c o n s t s t r i n g &, ValorBase ∗ c o n s t ) ; vector< s u b s t i t u a M i s s i n g s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ; s u b s t i t u a T o d o s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ; s u b s t i t u a I n v a l i d o s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ; s u b s t i t u a I n t e r v a l o D P ( c o n s t s t r i n g &, c o n s t D i s t r i b u i c a o &, c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t b o o l , c o n s t b o o l ) ; s u b s t i t u a D e s t a c a d o s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ; void s u b s t i t u a M i s s i n g s R L S ( c o n s t s t r i n g &, c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ; substituaTodosRLS ( c o n s t s t r i n g &, c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ; v o i d s u b s t i t u a I n v a l i d o s R L S ( c o n s t s t r i n g &, c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ; v o i d s u b s t i t u a I n t e r v a l o R L S ( c o n s t s t r i n g &, c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s & , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t b o o l , c o n s t b o o l ) ; v o i d s u b s t i t u a D e s t a c a d o s R L S ( c o n s t s t r i n g &, c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ; void 71 } ; 72 73 #e n d i f // DIALOG SUBST QUANT H Listagem B.63: dialog subst quant.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >A n a l i s e E d i c a o D a d o s S u b s t </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” A n a l i s e E d i c a o D a d o s S u b s t ”> 5 <p r o p e r t y name=” e n a b l e d ”> 6 <b o o l >t r u e </b o o l > 7 </ p r o p e r t y > 8 <p r o p e r t y name=” g e o m e t r y ”> 9 <r e c t > 10 <x>0</x> 11 <y>0</y> 12 <width >572</width> 13 <h e i g h t >313</ h e i g h t > 14 </ r e c t > 15 </ p r o p e r t y > 16 <p r o p e r t y name=” s i z e P o l i c y ”> 17 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” P r e f e r r e d ”> 18 <h o r s t r e t c h >0</ h o r s t r e t c h > 19 <v e r s t r e t c h >0</ v e r s t r e t c h > 20 </ s i z e p o l i c y > 21 </ p r o p e r t y > 22 <p r o p e r t y name=” minimumSize ”> 23 <s i z e > 24 <width >0</width> 210 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >16777215 </ width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” w i n d o w T i t l e ”> <s t r i n g >S u b s t i t u i r Q u a n t i t a t i v o </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” wi ndowOpaci ty ”> <d o u b l e >1 .0 0 0 00 0 00 0 0 00 0 0 0 </ d o u b l e > </ p r o p e r t y > <p r o p e r t y name=” s i z e G r i p E n a b l e d ”> <b o o l >f a l s e </b o o l > </ p r o p e r t y > <p r o p e r t y name=” modal ”> <b o o l >f a l s e </b o o l > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 6 ”> <i t e m> <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >A t r i b u t o : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l A t r i b u t o ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T e x t L a b e l </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” Q S p l i t t e r ” name=” s p l i t t e r ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : V e r t i c a l </enum> </ p r o p e r t y > <p r o p e r t y name=” c h i l d r e n C o l l a p s i b l e ”> <b o o l >f a l s e </b o o l > </ p r o p e r t y > <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=”Minimum”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >0</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >S u b s t i t u i r o s v a l o r e s : </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 8 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> <p r o p e r t y name=” s i z e C o n s t r a i n t ”> <enum>QLayout : : SetMinimumSize </enum> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n I n v a l i d o s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >I n v á l i d o s </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” c h e c k e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n M i s s i n g ”> 211 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 <p r o p e r t y name=” t e x t ”> <s t r i n g >M i s s i n g </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n T o d o s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Todos</ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n I n t e r v a l o P a r a S u b s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >I n t e r v a l o </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n D e s t a c a d o s ”> <p r o p e r t y name=” e n a b l e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >D e s t a c a d o s </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x I n t e r v a l o s S u b s t ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=”Minimum”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >I n t e v a l o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 7 ”/> </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 2 ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” Expanding ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >S u b s t i t u i r p o r : </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 5 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 5 ”> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o Z e r o ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Z e r o </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” c h e c k e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n M e d i a ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Média g e r a l </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” c h e c k e d ”> <b o o l >f a l s e </b o o l > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n M e d i a P a r c i a l ”> 212 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 <p r o p e r t y name=” t e x t ”> <s t r i n g >Média p a r c i a l </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n D P ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >D i s t r i b u i ç ã o de p r o b a b i l i d a d e </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QRadioButton ” name=” r a d i o B u t t o n R L S ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >R e g r e s s ã o l i n e a r s i m p l e s </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” QStackedWidget ” name=” s t a c k e d W i d g e t M e d i a P a r c i a l D p R L S ”> <p r o p e r t y name=” c u r r e n t I n d e x ”> <number>0</number> </ p r o p e r t y > <w i d g e t c l a s s =” QWidget ” name=” p a g e M e d i a P a r c i a l ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 3 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x 3 ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >Média móvel </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 9 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l F i l t r o ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >A t r i b u t o F i l t r o : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QComboBox” name=” c o m b o B o x A t r i b u t o M e d P a r c i a l ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” Expanding ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” 213 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 p u s h B u t t o n C a l c M e d i a P a r c i a l ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >C a l c u l a r Média P a r c i a l </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” QStackedWidget ” name=” s t a c k e d W i d g e t I n t e r v a l o s M e d i a P a r c i a l ”> <p r o p e r t y name=” e n a b l e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” P r e f e r r e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” c u r r e n t I n d e x ”> <number>1</number> </ p r o p e r t y > <w i d g e t c l a s s =” QWidget ” name=” pageQuant ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” p a g e Q u a l i ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > </ l a y o u t > </w i d g e t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” pageDP ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 4 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” groupBoxDP ”> <p r o p e r t y name=” maximumSize ”> <s i z e > <width >16777215 </ width> <h e i g h t >16777215 </ h e i g h t > 214 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >D i s t r i b u i ç ã o de P r o b a b i l i d a d e </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 0 ”/> </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” pageRLS ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 1 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” groupBoxRLS ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >R e g r e s s ã o l i n e a r s i m p l e s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 2 ”/> </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </w i d g e t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 4 ”> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 4 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >V a l o r : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QDoubleSpinBox ” name=” d o u b l e S p i n B o x V a l o r ”> <p r o p e r t y name=” e n a b l e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” Expanding ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” a l i g n m e n t ”> <s e t >Qt : : A l i g n R i g h t | Qt : : A l i g n T r a i l i n g | Qt : : A l i g n V C e n t e r </ s e t > </ p r o p e r t y > <p r o p e r t y name=”maximum”> <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > </ p r o p e r t y > <p r o p e r t y name=” s i n g l e S t e p ”> <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> </ l a y o u t > </w i d g e t > </w i d g e t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 3 ”> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > 215 431 <width >40</width> 432 <h e i g h t >20</ h e i g h t > 433 </ s i z e > 434 </ p r o p e r t y > 435 </ s p a c e r > 436 </i t e m> 437 <i t e m> 438 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n S u b s t i t u i r ”> 439 <p r o p e r t y name=” t e x t ”> 440 <s t r i n g >S u b s t i t u i r </ s t r i n g > 441 </ p r o p e r t y > 442 </w i d g e t > 443 </i t e m> 444 <i t e m> 445 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a n c e l a r ”> 446 <p r o p e r t y name=” t e x t ”> 447 <s t r i n g >C a n c e l a r </ s t r i n g > 448 </ p r o p e r t y > 449 </w i d g e t > 450 </i t e m> 451 </ l a y o u t > 452 </i t e m> 453 </ l a y o u t > 454 </w i d g e t > 455 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 456 < r e s o u r c e s /> 457 <c o n n e c t i o n s /> 458 </u i > Listagem B.64: dialog subst quant.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #i n c l u d e ” d i a l o g v i s u a l i z a r g r a f i c o s . h” #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e ” g e r a d o r g r a f i c o s . h” ” c o l e t o r e s t a t i s t i c a s . h” ” e s c a l a n o m e s . h” ” p o p u l a d o r . h” #i n c l u d e <c a s s e r t > D i a l o g V i s u a l i z a r G r a f i c o s : : D i a l o g V i s u a l i z a r G r a f i c o s ( QWidget ∗ p a r e n t ) : QDialog ( p a r e n t ) { ui . setupUi ( t h i s ) ; populaComboBoxXYCor ( ) ; s e t W i n d o w F l a g s ( ( w i n d o w F l a g s ( ) | Qt : : WindowMaximizeButtonHint ) & ˜Qt : : WindowContextHelpButtonHint ) ; inicializarTabDiagramaDispersao2v () ; inicializarTabDiagramaDispersao3v () ; inicializarTabBarrasEmpilhadas () ; inicializarTabDiagramaCaixas () ; } void { 29 30 31 32 33 34 u i . comboBoxX2v−>s e t C u r r e n t T e x t ( ” L i t o l o g i a ” ) ; u i . comboBoxY2v−>s e t C u r r e n t T e x t ( ”PROF” ) ; connect ( ui this , connect ( ui this , 35 36 37 38 39 40 41 DialogVisualizarGraficos : : inicializarTabDiagramaDispersao2v () d i a g r a m a D i s p e r s a o 2 v = new D i a g r a m a D i s p e r s a o ( f a l s e , u i . g r o u p B o x D i a g r a m a D i s p e r s a o 2 V ) ; // d e l e t a d o em ˜ DialogVisualizarGraficos u i . g r o u p B o x D i a g r a m a D i s p e r s a o 2 V−>l a y o u t ( )−>addWidget ( diagramaDispersao2v ) ; . comboBoxX2v , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t SLOT( currentIndexChangedComboBoxXY2v ( ) ) ) ; . comboBoxY2v , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t SLOT( currentIndexChangedComboBoxXY2v ( ) ) ) ; Q S t r i n g &) ) , Q S t r i n g &) ) , currentIndexChangedComboBoxXY2v ( ) ; } void { DialogVisualizarGraficos : : inicializarTabDiagramaDispersao3v () 216 42 d i a g r a m a D i s p e r s a o 3 v = new D i a g r a m a D i s p e r s a o ( t r u e , u i . g r o u p B o x D i a g r a m a D i s p e r s a o 3 V ) ; // d e l e t a d o em ˜ DialogVisualizarGraficos u i . g r o u p B o x D i a g r a m a D i s p e r s a o 3 V−>l a y o u t ( )−>addWidget ( diagramaDispersao3v ) ; 43 44 45 46 47 48 49 u i . comboBoxX3v−>s e t C u r r e n t T e x t ( ” L i t o l o g i a ” ) ; u i . comboBoxY3v−>s e t C u r r e n t T e x t ( ”PROF” ) ; u i . comboBoxCor3v−>s e t C u r r e n t I n d e x ( u i . comboBoxCor3v−>c o u n t ( ) − 1 ) ; connect ( ui this , connect ( ui this , connect ( ui this , 50 51 52 53 54 55 56 57 58 currentIndexChangedComboBoxXY3v ( ) ; } void { c o n n e c t ( u i . comboBoxXBarras , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , t h i s , SLOT( c u rr en tI nd ex Ch an ge d Co mb oB ox Ba rr as X Co r ( ) ) ) ; c o n n e c t ( u i . comboBoxCorBarras , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , t h i s , SLOT( cu rr e nt In de xC ha ng ed C om bo Bo xB ar ra sX C or ( ) ) ) ; c ur re nt In d ex Ch an gedC om b oB ox Ba rr as XC or ( ) ; } void { 95 108 DialogVisualizarGraficos : : inicializarTabDiagramaCaixas () d i a g r a m a C a i x a = new D i a g r a m a C a i x a ( u i . g r o u p B o x D i a g r a m a C a i x a ) ; // d e l e t a d o em ˜ D i a l o g V i s u a l i z a r G r a f i c o s u i . groupBoxDiagramaCaixa−>l a y o u t ( )−>addWidget ( d i a g r a m a C a i x a ) ; 73 74 75 96 97 98 99 100 101 102 103 104 105 106 107 // d e l e t a d o em u i . comboBoxXBarras−>s e t C u r r e n t T e x t ( ” L i t o l o g i a ” ) ; u i . comboBoxCorBarras−>s e t C u r r e n t T e x t ( ”PROF” ) ; 65 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 DialogVisualizarGraficos : : inicializarTabBarrasEmpilhadas () m u l t i B a r r a s = new G r a f i c o M u l t i B a r r a s ( u i . g r o u p B o x B a r r a s ) ; ˜ DialogVisualizarGraficos u i . g r o u p B o x B a r r a s−>l a y o u t ( )−>addWidget ( m u l t i B a r r a s ) ; 59 60 61 62 63 64 66 67 68 69 70 71 72 . comboBoxX3v , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , SLOT( currentIndexChangedComboBoxXY3v ( ) ) ) ; . comboBoxY3v , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , SLOT( currentIndexChangedComboBoxXY3v ( ) ) ) ; . comboBoxCor3v , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , SLOT( currentIndexChangedComboBoxXY3v ( ) ) ) ; c o n n e c t ( u i . c o m b o B o x A t r i b u t o D i a g r a m a C a i x a , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , t h i s , SLOT( currentIndexChangedComboBoxAtributoDiagramaCaixas ( ) ) ) ; currentIndexChangedComboBoxAtributoDiagramaCaixas ( ) ; } DialogVisualizarGraficos : : ˜ DialogVisualizarGraficos () { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; qDebug ( ) << delete delete delete delete diagramaDispersao2v ; diagramaDispersao3v ; multiBarras ; diagramaCaixa ; } void { D i a l o g V i s u a l i z a r G r a f i c o s : : populaComboBoxXYCor ( ) const const v e c t o r <s t r i n g > &a t r i b u t o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ; c o n s t v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; P o p u l a d o r : : populeComboBox ( u i . comboBoxX2v , P o p u l a d o r : : populeComboBox ( u i . comboBoxY2v , atributos ) ; atributos ) ; P o p u l a d o r : : populeComboBox ( u i . comboBoxY3v , a t r i b u t o s ) ; P o p u l a d o r : : populeComboBox ( u i . comboBoxX3v , a t r i b u t o s ) ; P o p u l a d o r : : populeComboBox ( u i . comboBoxCor3v , a t r i b u t o s ) ; P o p u l a d o r : : populeComboBox ( u i . comboBoxXBarras , a t r i b u t o s ) ; P o p u l a d o r : : populeComboBox ( u i . comboBoxCorBarras , a t r i b u t o s ) ; P o p u l a d o r : : populeComboBox ( u i . c o m b o B o x A t r i b u t o D i a g r a m a C a i x a , atributosQuant ) ; 217 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 u i . comboBoxX2v−>s e t C u r r e n t I n d e x ( 0 ) ; u i . comboBoxXBarras−>s e t C u r r e n t I n d e x ( 0 ) ; if { u i . comboBoxY2v−>s e t C u r r e n t I n d e x ( a t r i b u t o s . s i z e ( ) − 1 ) ; u i . comboBoxCorBarras−>s e t C u r r e n t I n d e x ( a t r i b u t o s . s i z e ( ) − 1 ) ; } else { u i . comboBoxY2v−>s e t C u r r e n t I n d e x ( 0 ) ; u i . comboBoxCorBarras−>s e t C u r r e n t I n d e x ( 0 ) ; } } void D i a l o g V i s u a l i z a r G r a f i c o s : : ploteDiagramaDispersao2v ( const a t r i b X , c o n s t s t r i n g &a t r i b Y ) d i a g r a m a D i s p e r s a o 2 v −>c l e a r P o i n t s ( ) ; // d i a g r a m a D i s p e r s a o 2 v −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; d i a g r a m a D i s p e r s a o 2 v −>s e t A u t o R e p l o t ( f a l s e ) ; d i a g r a m a D i s p e r s a o 2 v −>s e t A x i s A u t o S c a l e ( f a l s e ) ; d i a g r a m a D i s p e r s a o 2 v −>s e t A x i s T i t l e ( QwtPlot : : xBottom , Q S t r i n g : : fromLatin1 ( atribX . c s t r ( ) ) ) ; d i a g r a m a D i s p e r s a o 2 v −>s e t A x i s T i t l e ( QwtPlot : : y L e f t , Q S t r i n g : : f r o m L a t i n 1 ( atribY . c s t r () ) ) ; 133 134 G e r a d o r G r a f i c o s : : Coordenadas coordenadas = G e r a d o r G r a f i c o s : : Coordenadas () ; GeradorGraficos : : gerarDiagramaDispersao2v ( atribX , atribY , coordenadas ) ; 135 136 137 138 139 if { s t r i n g msg = ”Não f o i p o s sı́ v e l g e r a r o g r á f i c o de com d u a s v a r i á v e i s . \ n ” ”Um d o s a t r i b u t o s \” ” +a t r i b X +” \” ou \” ” +a t r i b Y +” \” tem t o d o s o s v a l o r e s i n v á l i d o s ! ” ; d i s p e r s ã o QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( msg . c s t r ( ) ) ) ; return ; 144 145 146 147 QString : : } for 148 149 150 151 152 153 ( G e r a d o r G r a f i c o s : : Coordenadas : : c o n s t i t e r a t o r coordenadas . cbegin () ; c i t C o o r d e n a d a != c o o r d e n a d a s . c e n d ( ) ; c i t C o o r d e n a d a ++) citCoordenada = { const G e r a d o r G r a f i c o s : : Coordenada &c o o r d e n a d a = ∗ c i t C o o r d e n a d a ; d i a g r a m a D i s p e r s a o 2 v −>a p p e n d P o i n t ( QPointF ( c o o r d e n a d a [ 0 ] , [1]) ) ; coordenada } 154 155 156 ajustarEixoDiagramaDispersao ( diagramaDispersao2v , xBottom ) ; ajustarEixoDiagramaDispersao ( diagramaDispersao2v , yLeft ) ; 157 172 173 174 175 176 177 178 ( c o o r d e n a d a s . empty ( ) ) const 140 141 142 143 167 168 169 170 171 string & { 132 158 159 160 161 162 163 164 165 166 ( a t r i b u t o s . s i z e ( ) > 1) atribX , QwtPlot : : atribY , QwtPlot : : // d i a g r a m a D i s p e r s a o 2 v −>s e t U p d a t e s E n a b l e d ( t r u e ) ; d i a g r a m a D i s p e r s a o 2 v −>s e t A u t o R e p l o t ( t r u e ) ; d i a g r a m a D i s p e r s a o 2 v −>s e t A x i s A u t o S c a l e ( t r u e ) ; d i a g r a m a D i s p e r s a o 2 v −>r e p l o t ( ) ; } void D i a l o g V i s u a l i z a r G r a f i c o s : : ploteDiagramaDispersao3v ( const a t r i b X , c o n s t s t r i n g &a t r i b Y , c o n s t s t r i n g &a t r i b C o r ) string & { v e c t o r <s t r i n g > c l a s s e s S t r i n g = v e c t o r <s t r i n g >() ; i f ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b C o r ) ) { C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o d a s C a t e g o r i a s A t r i b u t o Q u a l ( atribCor , c l a s s e s S t r i n g ) ; } else { c l a s s e s S t r i n g = obterIntervalosQuantitativosString ( atribCor ) ; } Q L i s t<Q S t r i n g> c l a s s e s Q S t r i n g = c o n v e r t e T o Q L i s t Q S t r i n g ( c l a s s e s S t r i n g ) ; 218 179 180 181 182 183 // d i a g r a m a D i s p e r s a o 3 v −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; d i a g r a m a D i s p e r s a o 3 v −>s e t A u t o R e p l o t ( f a l s e ) ; d i a g r a m a D i s p e r s a o 3 v −>s e t A x i s A u t o S c a l e ( f a l s e ) ; d i a g r a m a D i s p e r s a o 3 v −>s e t T o t a l C u r v a s ( c l a s s e s Q S t r i n g . s i z e ( ) , classesQString ) ; d i a g r a m a D i s p e r s a o 3 v −>s e t A x i s T i t l e ( QwtPlot : : xBottom , Q S t r i n g : : fromLatin1 ( atribX . c s t r ( ) ) ) ; d i a g r a m a D i s p e r s a o 3 v −>s e t A x i s T i t l e ( QwtPlot : : y L e f t , Q S t r i n g : : f r o m L a t i n 1 ( atribY . c s t r () ) ) ; d i a g r a m a D i s p e r s a o 3 v −>s e t T i t u l o L e g e n d a ( Q S t r i n g : : f r o m L a t i n 1 ( a t r i b C o r . c str () ) ) ; 184 185 186 187 188 G e r a d o r G r a f i c o s : : Coordenadas coordenadas = G e r a d o r G r a f i c o s : : Coordenadas () ; GeradorGraficos : : gerarDiagramaDispersao3v ( atribX , atribY , atribCor , coordenadas ) ; 189 190 191 192 193 if { ( c o o r d e n a d a s . empty ( ) ) const s t r i n g msg = ”Não f o i p o s sı́ v e l g e r a r o g r á f i c o de d i s p e r s ã o com t r ê s v a r i á v e i s . \ n ” ”Um d o s a t r i b u t o s \” ” +a t r i b X +” \ ” , \” ” +a t r i b Y +” \” ou \” ” + atribCor +” \” tem t o d o s o s v a l o r e s i n v á l i d o s ! ” ; 194 195 196 197 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( msg . c s t r ( ) ) ) ; return ; 198 199 200 201 202 203 } if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b C o r ) ) for 204 205 206 207 208 209 const citCoord = G e r a d o r G r a f i c o s : : Coordenada &c o o r d e n a d a = ∗ c i t C o o r d ; d i a g r a m a D i s p e r s a o 3 v −>a p p e n d P o i n t ( QPointF ( c o o r d e n a d a [ 0 ] , coordenada [ 1 ] ) , coordenada [ 2 ] ) ; } } else { for 215 216 217 218 219 220 ( G e r a d o r G r a f i c o s : : Coordenadas : : c o n s t i t e r a t o r coordenadas . cbegin () ; c i t C o o r d != c o o r d e n a d a s . c e n d ( ) ; c i t C o o r d ++) citCoord = { const G e r a d o r G r a f i c o s : : Coordenada &c o o r d e n a d a = ∗ c i t C o o r d ; d i a g r a m a D i s p e r s a o 3 v −>a p p e n d P o i n t ( QPointF ( c o o r d e n a d a [ 0 ] , c o o r d e n a d a [ 1 ] ) , C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> indiceClasseQuant ( coordenada [ 2 ] , atribCor ) ) ; } 221 222 223 224 } ajustarEixoDiagramaDispersao ( diagramaDispersao3v , xBottom ) ; ajustarEixoDiagramaDispersao ( diagramaDispersao3v , yLeft ) ; 225 235 236 237 238 239 240 241 242 243 ( G e r a d o r G r a f i c o s : : Coordenadas : : c o n s t i t e r a t o r coordenadas . cbegin () ; c i t C o o r d != c o o r d e n a d a s . c e n d ( ) ; c i t C o o r d ++) { 210 211 212 213 214 226 227 228 229 230 231 232 233 234 QString : : atribX , QwtPlot : : atribY , QwtPlot : : // d i a g r a m a D i s p e r s a o 3 v −>s e t U p d a t e s E n a b l e d ( t r u e ) ; d i a g r a m a D i s p e r s a o 3 v −>s e t A u t o R e p l o t ( t r u e ) ; d i a g r a m a D i s p e r s a o 3 v −>s e t A x i s A u t o S c a l e ( t r u e ) ; d i a g r a m a D i s p e r s a o 3 v −>r e p l o t ( ) ; } Q L i s t<Q S t r i n g> D i a l o g V i s u a l i z a r G r a f i c o s : : c o n v e r t e T o Q L i s t Q S t r i n g ( c o n s t v e c t o r <s t r i n g > & c l a s s e s ) c o n s t { Q L i s t<Q S t r i n g> l i s t a ; for ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t C l a s s e != c l a s s e s . c e n d ( ) ; c i t C l a s s e ++) c i t C l a s s e = c l a s s e s . cbegin () ; { l i s t a . p u s h b a c k ( Q S t r i n g : : f r o m L a t i n 1 ( c i t C l a s s e −>c s t r ( ) ) ) ; } 219 244 245 246 247 248 249 250 return void DialogVisualizarGraficos : : ajustarEixoDiagramaDispersao ( D i a g r a m a D i s p e r s a o ∗ d i a g r a m a D i s p e r s a o , c o n s t s t r i n g &a t r i b , axisId ) const d i a g r a m a D i s p e r s a o −>s e t A x i s T i t l e ( a x i s I d , () ) ) ; if { c o n s t s i z e t max = v a l Q u a l i t a t i v o s . s i z e ( ) ; d i a g r a m a D i s p e r s a o −>s e t A x i s S c a l e ( a x i s I d , −1, max , 1) ; d i a g r a m a D i s p e r s a o −>s e t A x i s S c a l e D r a w ( a x i s I d , new E s c a l a N o m e s ( v a l Q u a l i t a t i v o s ) ) ; // Quando s e t a uma e s c a l a é chamado a e s c a l a a n t i g a é e x c l u i d a , Quando d e s t r o i o d i a g r a m a D i s p e r s a o 2 v tmb destroi a escala d i a g r a m a D i s p e r s a o −>u p d a t e A x e s ( ) ; if { ( a x i s I d == QwtPlot : : xBottom ) d i a g r a m a D i s p e r s a o −>s e t A x i s L a b e l R o t a t i o n ( QwtPlot : : xBottom , 4 5 ) ; d i a g r a m a D i s p e r s a o −>s e t A x i s L a b e l A l i g n m e n t ( QwtPlot : : xBottom , Qt : : AlignRight ) ; } 267 268 269 270 271 } else { const C o l e t o r E s t a t i s t i c a s : : E s t a t i s t i c a Q u a n t &e s t a t i s t i c a Q u a n t = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> estatisticaAtributoQuantitativo ( atrib ) ; d i a g r a m a D i s p e r s a o −>s e t A x i s S c a l e ( a x i s I d , e s t a t i s t i c a Q u a n t . minimo − 1 , e s t a t i s t i c a Q u a n t . maximo + 1 ) ; 272 273 274 d i a g r a m a D i s p e r s a o −>s e t A x i s S c a l e D r a w ( a x i s I d , new E s c a l a N o m e s ( ) ) ; // Quando s e t a uma e s c a l a é chamado a e s c a l a a n t i g a é e x c l u i d a , Quando d e s t r o i o d i a g r a m a D i s p e r s a o 2 v tmb d e s t r o i a e s c a l a d i a g r a m a D i s p e r s a o −>u p d a t e A x e s ( ) ; 275 276 277 278 279 280 if { ( a x i s I d == QwtPlot : : xBottom ) d i a g r a m a D i s p e r s a o −>s e t A x i s L a b e l R o t a t i o n ( QwtPlot : : xBottom , 0 ) ; d i a g r a m a D i s p e r s a o −>s e t A x i s L a b e l A l i g n m e n t ( QwtPlot : : xBottom , Qt : : AlignCenter ) ; } } } void { D i a l o g V i s u a l i z a r G r a f i c o s : : currentIndexChangedComboBoxXY2v ( ) const 288 const string () ; string () ; a t r i b u t o X = u i . comboBoxX2v−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) . d a t a a t r i b u t o Y = u i . comboBoxY2v−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) . d a t a ploteDiagramaDispersao2v ( atributoX , atributoY ) ; } void { D i a l o g V i s u a l i z a r G r a f i c o s : : currentIndexChangedComboBoxXY3v ( ) string () ; string () ; const string data ( ) ; 296 297 305 QString : : fromLatin1 ( a t r i b . c s t r v e c t o r <s t r i n g > v a l Q u a l i t a t i v o s = v e c t o r <s t r i n g >() ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o d a s C a t e g o r i a s A t r i b u t o Q u a l ( atrib , valQualitativos ) ; 261 262 263 264 265 266 298 299 300 301 302 303 304 int ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b ) ) 256 257 258 259 260 289 290 291 292 293 294 295 const { 251 252 253 254 255 281 282 283 284 285 286 287 lista ; } const a t r i b u t o X = u i . comboBoxX3v−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) . d a t a const a t r i b u t o Y = u i . comboBoxY3v−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) . d a t a a t r i b u t o C o r = u i . comboBoxCor3v−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) . ploteDiagramaDispersao3v ( atributoX , atributoY , atributoCor ) ; } void { D i a l o g V i s u a l i z a r G r a f i c o s : : c ur re nt In de xC ha n ge dC om bo Bo xB ar r as XC or ( ) const const string data ( ) ; string a t r i b u t o X = u i . comboBoxXBarras−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) . a t r i b u t o Y = u i . comboBoxCorBarras−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) 220 . data ( ) ; 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 ploteMultiBarras ( atributoX , void DialogVisualizarGraficos : : currentIndexChangedComboBoxAtributoDiagramaCaixas ( ) { c o n s t s t r i n g a t r i b u t o = u i . c o m b o B o x A t r i b u t o D i a g r a m a C a i x a−>c u r r e n t T e x t ( ) . toLatin1 ( ) . data ( ) ; ploteDiagramaCaixas ( a t r i b u t o ) ; } void DialogVisualizarGraficos : : ploteMultiBarras ( const s t r i n g &a t r i b C o r ) v e c t o r <G e r a d o r G r a f i c o s : : F r e q u e n c i a s > f r e q u e n c i a s = v e c t o r < G e r a d o r G r a f i c o s : : F r e q u e n c i a s >() ; GeradorGraficos : : gerarGraficoMultBarras ( atribX , atribCor , f r e q u e n c i a s ) ; if { s t r i n g msg = ”Não f o i p o s sı́ v e l g e r a r o g r á f i c o m u l t i b a r r a s . \ n ” ”Um d o s a t r i b u t o s \” ” +a t r i b X +” \” ou \” ” +a t r i b C o r +” \” tem t o d o s o s v a l o r e s i n v á l i d o s ! ” ; QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( msg . c s t r ( ) ) ) ; return ; QString : : } const const s i z e t n = frequencias . size () ; s i z e t m = frequencias [ 0 ] . size () ; m u l t i B a r r a s −>p o p u l a t e ( f r e q u e n c i a s , o b t e r T i t u l o s B a r r a s ( a t r i b C o r ) ) ; m u l t i B a r r a s −>s e t A x i s T i t l e ( QwtPlot : : y L e f t , Q S t r i n g : : f r o m L a t i n 1 ( ” F r e q u ê n c i a ” ) ) ; m u l t i B a r r a s −>s e t A x i s T i t l e ( QwtPlot : : xBottom , Q S t r i n g : : f r o m L a t i n 1 ( a t r i b X . c str () ) ) ; m u l t i B a r r a s −>s e t T i t u l o L e g e n d a ( Q S t r i n g : : f r o m L a t i n 1 ( a t r i b C o r . c s t r ( ) ) ) ; 340 374 ( f r e q u e n c i a s . empty ( ) ) const 332 333 334 335 336 337 338 339 369 370 371 372 373 const // m u l t i B a r r a s −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; m u l t i B a r r a s −>s e t A u t o R e p l o t ( f a l s e ) ; m u l t i B a r r a s −>s e t A x i s A u t o S c a l e ( f a l s e ) ; 328 329 330 331 355 356 357 358 359 360 361 362 363 364 365 366 367 368 s t r i n g &a t r i b X , { 323 324 325 326 327 341 342 343 344 345 346 347 348 349 350 351 352 353 354 atributoY ) ; } ajustarEixoXBarrasEmpilhadas ( atribX ) ; // m u l t i B a r r a s −>s e t U p d a t e s E n a b l e d ( t r u e ) ; m u l t i B a r r a s −>s e t A u t o R e p l o t ( t r u e ) ; m u l t i B a r r a s −>s e t A x i s A u t o S c a l e ( t r u e ) ; m u l t i B a r r a s −>r e p l o t ( ) ; } void { D i a l o g V i s u a l i z a r G r a f i c o s : : ploteDiagramaCaixas ( const const s t r i n g &a t r i b u t o ) C o l e t o r E s t a t i s t i c a s : : EstatisticaQuant &e s t a t i s t i c a = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> estatisticaAtributoQuantitativo ( atributo ) ; d i a g r a m a C a i x a−>s e t D a d o s ( atributo , e s t a t i s t i c a . maximo , e s t a t i s t i c a . whiskerSuperiorDiagramaCaixa , estatistica . quartilSuperior , e s t a t i s t i c a . mediana , estatistica . quartilInferior , e s t a t i s t i c a . whiskerInferiorDiagramaCaixa , e s t a t i s t i c a . minimo , e s t a t i s t i c a . outliersDiagramaCaixa ) ; } void D i a l o g V i s u a l i z a r G r a f i c o s : : ajustarEixoXBarrasEmpilhadas ( const atribX ) const string & { if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b X ) ) v e c t o r <s t r i n g > v a l Q u a l i t a t i v o s = v e c t o r <s t r i n g >() ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o d a s C a t e g o r i a s A t r i b u t o Q u a l ( atribX , v a l Q u a l i t a t i v o s ) ; 221 375 376 377 378 c o n s t s i z e t max = v a l Q u a l i t a t i v o s . s i z e ( ) ; m u l t i B a r r a s −>s e t A x i s S c a l e ( QwtPlot : : xBottom , v e c t o r <s t r i n g > & i n t e r v a l o s S t r i n g = o b t e r I n t e r v a l o s Q u a n t i t a t i v o s S t r i n g ( atribX ) ; 383 384 m u l t i B a r r a s −>s e t A x i s S c a l e ( QwtPlot : : xBottom , 0 , i n t e r v a l o s S t r i n g . s i z e ( ) , 1) ; m u l t i B a r r a s −>s e t A x i s S c a l e D r a w ( QwtPlot : : xBottom , new E s c a l a N o m e s ( i n t e r v a l o s S t r i n g ) ) ; // Quando s e t a uma e s c a l a é chamado a e s c a l a a n t i g a é e x c l u i d a , Quando d e s t r o i o d i a g r a m a D i s p e r s a o 2 v tmb d e s t r o i a e s c a l a 385 394 395 } m u l t i B a r r a s −>a j u s t a r L a b e l E i x o ( QwtPlot : : xBottom , m u l t i B a r r a s −>u p d a t e A x e s ( ) ; v e c t o r <s t r i n g > D i a l o g V i s u a l i z a r G r a f i c o s : : o b t e r I n t e r v a l o s Q u a n t i t a t i v o s S t r i n g ( c o n s t s t r i n g &a t r i b ) c o n s t const C o l e t o r E s t a t i s t i c a s : : F r e q u e n c i a s Q u a n t C o n t i n u o &f r e q u e n c i a s = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> frequenciasAtributoQuantContinuo ( atrib ) ; v e c t o r <s t r i n g > i n t e r v a l o s S t r i n g = v e c t o r <s t r i n g >() ; for ( C o l e t o r E s t a t i s t i c a s : : FrequenciasQuantContinuo : : c o n s t i t e r a t o r citFreq = frequencias . cbegin () ; c i t F r e q != f r e q u e n c i a s . c e n d ( ) ; c i t F r e q ++) { 404 405 421 422 423 424 i n f e r i o r = U t i l i d a d e s : : d b l T o S t d S t r ( c i t F r e q −> f i r s t . const string first ); const s t r i n g s u p e r i o r = U t i l i d a d e s : : d b l T o S t d S t r ( c i t F r e q −> f i r s t . second ) ; const string c o n c a t e n a c a o = i n f e r i o r + ” |−− ” + s u p e r i o r ; i n t e r v a l o s S t r i n g . push back ( concatenacao ) ; } return intervalosString ; } v e c t o r <s t r i n g > D i a l o g V i s u a l i z a r G r a f i c o s : : o b t e r T i t u l o s B a r r a s ( c o n s t atribY ) string & { if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b Y ) ) v e c t o r <s t r i n g > v a l Q u a l i t a t i v o s = v e c t o r <s t r i n g >() ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o d a s C a t e g o r i a s A t r i b u t o Q u a l ( atribY , v a l Q u a l i t a t i v o s ) ; return valQualitativos ; } return o b t e r I n t e r v a l o s Q u a n t i t a t i v o s S t r i n g ( atribY ) ; } Listagem B.65: dialog visualizar graficos.cpp 1 2 3 4 5 6 7 8 9 10 45) ; { 400 401 402 403 416 417 418 419 420 Qt : : A l i g n R i g h t , } 396 397 398 399 406 407 408 409 410 411 412 413 414 415 1) ; } else { 379 380 381 382 386 387 388 389 390 391 392 393 −1, max , m u l t i B a r r a s −>s e t A x i s S c a l e D r a w ( QwtPlot : : xBottom , new E s c a l a N o m e s ( v a l Q u a l i t a t i v o s ) ) ; // Quando s e t a uma e s c a l a é chamado a e s c a l a a n t i g a é e x c l u i d a , Quando d e s t r o i o d i a g r a m a D i s p e r s a o 2 v tmb destroi a escala #i f n d e f DIALOG VISUALIZAR GRAFICOS H #d e f i n e DIALOG VISUALIZAR GRAFICOS H #i n c l u d e ” u i d i a l o g v i s u a l i z a r g r a f i c o s . h” #i n c l u d e #i n c l u d e #i n c l u d e ” d i a g r a m a s c a t t e r . h” ” g r a f i c o m u l t i b a r r a s . h” ” d i a g r a m a c a i x a . h” using namespace std ; 222 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 class DialogVisualizarGraficos { Q OBJECT : public QDialog public : D i a l o g V i s u a l i z a r G r a f i c o s ( QWidget ∗ p a r e n t = 0 ) ; ˜ DialogVisualizarGraficos () ; private : Ui : : D i a l o g V i s u a l i z a r G r a f i c o s u i ; DiagramaDispersao ∗ diagramaDispersao2v ; DiagramaDispersao ∗ diagramaDispersao3v ; GraficoMultiBarras ∗ multiBarras ; DiagramaCaixa ∗ d i a g r a m a C a i x a ; void void populaComboBoxXYCor ( ) c o n s t ; p l o t e D i a g r a m a D i s p e r s a o 2 v ( c o n s t s t r i n g &a t r i b X , c o n s t s t r i n g & atribY ) ; v o i d p l o t e D i a g r a m a D i s p e r s a o 3 v ( c o n s t s t r i n g &a t r i b X , c o n s t s t r i n g & a t r i b Y , c o n s t s t r i n g &a t r i b C o r ) ; v o i d p l o t e M u l t i B a r r a s ( c o n s t s t r i n g &a t r i b X , c o n s t s t r i n g &a t r i b C o r ) ; v o i d p l o t e D i a g r a m a C a i x a s ( c o n s t s t r i n g &a t r i b u t o ) ; void inicializarTabDiagramaDispersao2v () ; void inicializarTabDiagramaDispersao3v () ; void inicializarTabBarrasEmpilhadas () ; void inicializarTabDiagramaCaixas () ; Q L i s t<Q S t r i n g> c o n v e r t e T o Q L i s t Q S t r i n g ( c o n s t v e c t o r <s t r i n g > & c l a s s e s ) const ; void ajustarEixoDiagramaDispersao ( DiagramaDispersao ∗ diagramaDispersao , c o n s t s t r i n g &a t r i b , c o n s t i n t a x i s I d ) c o n s t ; v o i d a j u s t a r E i x o ( c o n s t s t r i n g &a t r i b , c o n s t i n t a x i s I d ) c o n s t ; v o i d a j u s t a r E i x o X B a r r a s E m p i l h a d a s ( c o n s t s t r i n g &a t r i b X ) c o n s t ; v e c t o r <s t r i n g > o b t e r T i t u l o s B a r r a s ( c o n s t s t r i n g &a t r i b Y ) ; v e c t o r <s t r i n g > o b t e r I n t e r v a l o s Q u a n t i t a t i v o s S t r i n g ( c o n s t s t r i n g &a t r i b ) const ; 42 43 p r i v a t e s l o t s : 44 v o i d currentIndexChangedComboBoxXY2v ( ) ; 45 v o i d currentIndexChangedComboBoxXY3v ( ) ; 46 v o i d c ur re nt In de xC ha ng e dC om bo Bo xB ar ra s XC or ( ) ; 47 void currentIndexChangedComboBoxAtributoDiagramaCaixas ( ) ; 48 } ; 49 50 #e n d i f // DIALOG VISUALIZAR GRAFICOS H Listagem B.66: dialog visualizar graficos.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >D i a l o g V i s u a l i z a r G r a f i c o s </ c l a s s > 4 <w i d g e t c l a s s =” Q D i a l o g ” name=” D i a l o g V i s u a l i z a r G r a f i c o s ”> 5 <p r o p e r t y name=” w i n d o w M o d a l i t y ”> 6 <enum>Qt : : NonModal</enum> 7 </ p r o p e r t y > 8 <p r o p e r t y name=” g e o m e t r y ”> 9 <r e c t > 10 <x>0</x> 11 <y>0</y> 12 <width >761</width> 13 <h e i g h t >548</ h e i g h t > 14 </ r e c t > 15 </ p r o p e r t y > 16 <p r o p e r t y name=” w i n d o w T i t l e ”> 17 <s t r i n g >V i s u a l i z a ç ã o d o s Dados</ s t r i n g > 18 </ p r o p e r t y > 19 <p r o p e r t y name=” s i z e G r i p E n a b l e d ”> 20 <b o o l >f a l s e </b o o l > 21 </ p r o p e r t y > 22 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> 23 <i t e m> 24 <w i d g e t c l a s s =” QTabWidget ” name=” t a b W i d g e t ”> 25 <p r o p e r t y name=” maximumSize ”> 26 <s i z e > 27 <width >16777215 </ width> 28 <h e i g h t >16777215 </ h e i g h t > 29 </ s i z e > 30 </ p r o p e r t y > 31 <p r o p e r t y name=” c u r r e n t I n d e x ”> 223 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 <number>3</number> </ p r o p e r t y > <w i d g e t c l a s s =” QWidget ” name=” t a b D i a g r a m a D i s p e r s a o 2 V ”> < a t t r i b u t e name=” t i t l e ”> <s t r i n g >Diagrama D i s p e r s ã o ( 2V)</ s t r i n g > </ a t t r i b u t e > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x E i x o s ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >E i x o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> <i t e m> <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t 3 ”> <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l X ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >25</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >X: </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =”QComboBox” name=” comboBoxX2v ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >200</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >200</width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l Y ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” P r e f e r r e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >25</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Y: </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =”QComboBox” name=” comboBoxY2v ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > 224 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >200</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >200</width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >561</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x D i a g r a m a D i s p e r s a o 2 V ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >Diagrama D i s p e r s ã o </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 3 ”/> </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” t a b D i a g r a m a D i s p e r s a o 3 V ”> < a t t r i b u t e name=” t i t l e ”> <s t r i n g >Diagrama D i s p e r s ã o ( 3V)</ s t r i n g > </ a t t r i b u t e > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 2 ”> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x E i x o s 3 ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >E i x o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 4 ”> <i t e m> <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l X 2 ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >25</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >X: </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =”QComboBox” name=” comboBoxX3v ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > 225 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >200</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >200</width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l Y 2 ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” P r e f e r r e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >25</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Y: </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =”QComboBox” name=” comboBoxY3v ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >200</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >200</width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 2 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Cor : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 2 ” column=” 1 ”> <w i d g e t c l a s s =”QComboBox” name=” comboBoxCor3v ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >200</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> 226 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 <s p a c e r name=” h o r i z o n t a l S p a c e r 3 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >561</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x D i a g r a m a D i s p e r s a o 3 V ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >Diagrama D i s p e r s ã o </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 5 ”/> </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” t a b B a r r a s ”> < a t t r i b u t e name=” t i t l e ”> <s t r i n g >B a r r a s E m p i l h a d a s </ s t r i n g > </ a t t r i b u t e > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 4 ”> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x E i x o s 2 ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >E i x o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> <i t e m> <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t 2 ”> <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l X H i s t ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >25</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >X: </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =”QComboBox” name=” comboBoxXBarras ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >200</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >200</width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l Y H i s t ”> <p r o p e r t y name=” s i z e P o l i c y ”> 227 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” P r e f e r r e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >25</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Cor : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =”QComboBox” name=” comboBoxCorBarras ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >200</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >200</width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >561</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x B a r r a s ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >G r á f i c o de b a r r a s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 1 1 ”/> </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =” QWidget ” name=” t a b D i a g r a m a C a i x a ”> < a t t r i b u t e name=” t i t l e ”> <s t r i n g >Diagrama de C a i x a s </ s t r i n g > </ a t t r i b u t e > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 6 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 3 ”> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l A t r i b u t o ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >A t r i b u t o : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QComboBox” name=” c o m b o B o x A t r i b u t o D i a g r a m a C a i x a ”> 228 442 <p r o p e r t y name=” s i z e P o l i c y ”> 443 < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> 444 <h o r s t r e t c h >0</ h o r s t r e t c h > 445 <v e r s t r e t c h >0</ v e r s t r e t c h > 446 </ s i z e p o l i c y > 447 </ p r o p e r t y > 448 <p r o p e r t y name=” minimumSize ”> 449 <s i z e > 450 <width >200</width> 451 <h e i g h t >0</ h e i g h t > 452 </ s i z e > 453 </ p r o p e r t y > 454 </w i d g e t > 455 </i t e m> 456 <i t e m> 457 <s p a c e r name=” h o r i z o n t a l S p a c e r 4 ”> 458 <p r o p e r t y name=” o r i e n t a t i o n ”> 459 <enum>Qt : : H o r i z o n t a l </enum> 460 </ p r o p e r t y > 461 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 462 <s i z e > 463 <width >40</width> 464 <h e i g h t >20</ h e i g h t > 465 </ s i z e > 466 </ p r o p e r t y > 467 </ s p a c e r > 468 </i t e m> 469 </ l a y o u t > 470 </i t e m> 471 <i t e m> 472 <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x D i a g r a m a C a i x a ”> 473 <p r o p e r t y name=” s i z e P o l i c y ”> 474 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” Expanding ”> 475 <h o r s t r e t c h >0</ h o r s t r e t c h > 476 <v e r s t r e t c h >0</ v e r s t r e t c h > 477 </ s i z e p o l i c y > 478 </ p r o p e r t y > 479 <p r o p e r t y name=” t i t l e ”> 480 <s t r i n g >Diagrama de C a i x a s </ s t r i n g > 481 </ p r o p e r t y > 482 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 5 ”/> 483 </w i d g e t > 484 </i t e m> 485 </ l a y o u t > 486 </w i d g e t > 487 </w i d g e t > 488 </i t e m> 489 </ l a y o u t > 490 </w i d g e t > 491 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 492 < r e s o u r c e s /> 493 <c o n n e c t i o n s /> 494 </u i > Listagem B.67: dialog visualizar graficos.ui 1 #i n c l u d e ” t e l a i n i c i a l . h ” 2 3 #i n c l u d e ” w i d g e t a n a l i s e e x p l o r a c a o d a d o s . h ” 4 5 T e l a I n i c i a l : : T e l a I n i c i a l ( QWidget ∗ p a r e n t ) 6 : QMainWindow ( p a r e n t ) 7 { 8 ui . setupUi ( t h i s ) ; 9 10 t h i s −>s e t C e n t r a l W i d g e t ( new W i d g e t A n a l i s e E x p l o r a c a o D a d o s ( ) ) ; 11 } 12 13 T e l a I n i c i a l : : ˜ T e l a I n i c i a l ( ) 14 { 15 c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; 16 qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; 17 } Listagem B.68: tela inicial.cpp 229 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #i f n d e f #d e f i n e TELA INICIAL H TELA INICIAL H #i n c l u d e <QtWidgets /QMainWindow> #i n c l u d e ” u i t e l a i n i c i a l . h ” class TelaInicial { Q OBJECT : p u b l i c QMainWindow public : T e l a I n i c i a l ( QWidget ∗ p a r e n t = 0 ) ; ˜ TelaInicial () ; private : Ui : : T e l a I n i c i a l C l a s s ui ; }; #e n d i f // TELA INICIAL H Listagem B.69: tela inicial.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >T e l a I n i c i a l C l a s s </ c l a s s > 4 <w i d g e t c l a s s =”QMainWindow” name=” T e l a I n i c i a l C l a s s ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >1024</ width> 10 <h e i g h t >768</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” minimumSize ”> 14 <s i z e > 15 <width >0</width> 16 <h e i g h t >0</ h e i g h t > 17 </ s i z e > 18 </ p r o p e r t y > 19 <p r o p e r t y name=” w i n d o w T i t l e ”> 20 <s t r i n g >A n á l i s e e Tratamento d o s Dados</ s t r i n g > 21 </ p r o p e r t y > 22 <p r o p e r t y name=” w i n d o w I c o n ”> 23 < i c o n s e t r e s o u r c e=” t e l a i n i c i a l . q r c ”> 24 <n o r m a l o f f >:/ A n a l i s e T r a t a m e n t o / R e s o u r c e s / i c o n e . i c o </ n o r m a l o f f >:/ A n a l i s e T r a t a m e n t o / R e s o u r c e s / i c o n e . i c o </ i c o n s e t > 25 </ p r o p e r t y > 26 <w i d g e t c l a s s =” QWidget ” name=” c e n t r a l W i d g e t ”/> 27 </w i d g e t > 28 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 29 <r e s o u r c e s > 30 <i n c l u d e l o c a t i o n=” t e l a i n i c i a l . q r c ”/> 31 </ r e s o u r c e s > 32 <c o n n e c t i o n s /> 33 </u i > Listagem B.70: tela inicial.ui 1 <RCC> 2 <q r e s o u r c e p r e f i x =” / A n a l i s e T r a t a m e n t o ”> 3 < f i l e >R e s o u r c e s / i c o n e . i c o </ f i l e > 4 </ q r e s o u r c e > 5 </RCC> Listagem B.71: tela inicial.qrc 1 2 3 4 5 6 #i n c l u d e ” w i d g e t a n a l i s e e x p l o r a c a o d a d o s . h” #i n c l u d e #i n c l u d e #i n c l u d e ” d i a l o g e d i c a o d a d o s . h” ” d i a l o g v i s u a l i z a r g r a f i c o s . h” ” d i a l o g i m p o r t a c a o d a d o s . h” 230 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #i n c l u d e #i n c l u d e #i n c l u d e 23 24 25 26 27 28 29 30 31 32 { 33 34 35 ” p o p u l a d o r . h” ” c o l e t o r e s t a t i s t i c a s . h” ” g e r a d o r g r a f i c o s . h” #i f n d e f TCC RODOLFO #i n c l u d e ” t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . h ” #i n c l u d e ” i n t e g r a c a o t r e i n a m e n t o . h ” #i n c l u d e ” e s c o l h a p o c o . h ” #i n c l u d e ” s a l v a r b d . h ” #i n c l u d e ” d a o p o c o . h ” #i n c l u d e ” t h r e a d w o r k e r s a l v a r B D . h ” #e n d i f #i n c l u d e <f s t r e a m > W i d g e t A n a l i s e E x p l o r a c a o D a d o s : : W i d g e t A n a l i s e E x p l o r a c a o D a d o s ( QWidget ∗ p a r e n t ) : WidgetProgresso ( parent ) ui . setupUi ( t h i s ) ; t h i s −> h i s t o g r a m a = NULL ; t h i s −> g r a f i c o B a r r a s = NULL ; p r i m e i r a I n i c i a l i z a c a o = true ; // nao pode e d i t a r t a b e l a e s t a t i s t i c a s u i . t a b l e W i d g e t E s t a t i s t i c a s −>s e t E d i t T r i g g e r s ( Q A b s t r a c t I t e m V i e w : : NoEditTriggers ) ; u i . t a b l e W i d g e t E s t a t i s t i c a s −>v e r t i c a l H e a d e r ( )−>s e t V i s i b l e ( f a l s e ) ; u i . t a b l e W i d g e t E s t a t i s t i c a s −>h o r i z o n t a l H e a d e r ( )−>s e t V i s i b l e ( f a l s e ) ; u i . t a b l e W i d g e t E s t a t i s t i c a s −>h o r i z o n t a l H e a d e r ( )−>s e t S e c t i o n R e s i z e M o d e ( QHeaderView : : S t r e t c h ) ; 36 37 #i f n d e f TCC RODOLFO 38 c o n n e c t ( u i . p u s h B u t t o n C a r r e g a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( carregarBDClick () ) ) ; 39 #e l s e 40 c o n n e c t ( u i . p u s h B u t t o n C a r r e g a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( carregarArquivoClick () ) ) ; 41 #e n d i f 42 43 habilitarEventos ( false ) ; 44 45 u i . w i d g e t H i s t o g r a m a G r a f i c o B a r r a s −>s e t A u t o F i l l B a c k g r o u n d ( t r u e ) ; 46 // Q P a l e t t e p a l = u i . w i d g e t H i s t o g r a m a G r a f i c o B a r r a s −>p a l e t t e ( ) ; 47 // p a l . s e t C o l o r ( Q P a l e t t e : : Window , Qt : : w h i t e ) ; 48 // u i . w i d g e t H i s t o g r a m a G r a f i c o B a r r a s −>s e t P a l e t t e ( p a l ) ; 49 } 50 51 v o i d W i d g e t A n a l i s e E x p l o r a c a o D a d o s : : h a b i l i t a r E v e n t o s ( b o o l h a b i l i t a d o ) c o n s t 52 { 53 h a b i l i t a d o = h a b i l i t a d o && ! p r i m e i r a I n i c i a l i z a c a o ; 54 55 u i . l i s t W i d g e t A t r i b u t o s −>s e t E n a b l e d ( h a b i l i t a d o ) ; 56 u i . t r e e W i d g e t T i p o s −>s e t E n a b l e d ( h a b i l i t a d o ) ; 57 u i . pushButtonRemover−>s e t E n a b l e d ( h a b i l i t a d o ) ; 58 u i . pushButtonTodos−>s e t E n a b l e d ( h a b i l i t a d o ) ; 59 u i . p u s h B u t t o n I n v e r t e r −>s e t E n a b l e d ( h a b i l i t a d o ) ; 60 u i . p u s h B u t t o n E d i c a o−>s e t E n a b l e d ( h a b i l i t a d o ) ; 61 u i . p u s h B u t t o n V i s u a l i z a c a o −>s e t E n a b l e d ( h a b i l i t a d o ) ; 62 u i . p u s h B u t t o n S a l v a r−>s e t E n a b l e d ( h a b i l i t a d o ) ; 63 #i f n d e f TCC RODOLFO 64 u i . pushButtonRemover−>s e t E n a b l e d ( f a l s e ) ; // Não s e pode r e m o v e r a t r i b u t o s d o s d a d o s do p o ç o . G a r a n t i r c o n s i s t ê n c i a 65 #e l s e 66 u i . pushButtonRemover−>s e t E n a b l e d ( h a b i l i t a d o ) ; 67 #e n d i f 68 } 69 70 W i d g e t A n a l i s e E x p l o r a c a o D a d o s : : ˜ W i d g e t A n a l i s e E x p l o r a c a o D a d o s ( ) 71 { 72 c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; 73 qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; 74 75 i f ( graficoBarras ) delete graficoBarras ; 76 i f ( histograma ) delete histograma ; 77 78 ColetorEstatisticas : : destruirInstancia () ; 79 TabelaDeRegistros : : d e s t r u i r I n s t a n c i a () ; 80 81 f o r ( v e c t o r <T h r e a d C o n t r o l l e r ∗ > : : c o n s t i t e r a t o r c i t T h r e a d = toDelete . cbegin () ; 231 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 c i t T h r e a d != c i t T h r e a d ++) delete ∗citThread ; } } void { WidgetAnaliseExploracaoDados : : i n i c i a l i z e ( ) if { ( primeiraInicializacao ) c o n n e c t ( u i . l i s t W i d g e t A t r i b u t o s , SIGNAL ( c u r r e n t I t e m C h a n g e d ( Q L i s t W i d g e t I t e m ∗ , Q L i s t W i d g e t I t e m ∗ ) ) , t h i s , SLOT( currentItemChangedListWidgetAtributos ( QListWidgetItem ∗ , QListWidgetItem ∗) ) ) ; c o n n e c t ( u i . t r e e W i d g e t T i p o s , SIGNAL ( c u r r e n t I t e m C h a n g e d ( QTreeWidgetItem ∗ , QTreeWidgetItem ∗ ) ) , t h i s , SLOT( c u r r e n t I t e m C h a n g e d T r e e W i d g e t T i p o s ( QTreeWidgetItem ∗ , QTreeWidgetItem ∗ ) ) ) ; c o n n e c t ( u i . pushButtonRemover , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( removerAtributoClick () ) ) ; c o n n e c t ( u i . pushButtonTodos , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( selecionarTodosAtributosClick () ) ) ; c o n n e c t ( u i . p u s h B u t t o n I n v e r t e r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( inverterSelecaoClick () ) ) ; c o n n e c t ( u i . p u s h B u t t o n E d i c a o , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( edicaoClick () ) ) ; c o n n e c t ( u i . p u s h B u t t o n V i s u a l i z a c a o , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( visualizarGraficosClick () ) ) ; #i f n d e f TCC RODOLFO c o n n e c t ( u i . p u s h B u t t o n S a l v a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( salvarBDClick () ) ) ; u i . pushButtonRemover−>s e t E n a b l e d ( f a l s e ) ; // Não s e pode r e m o v e r a t r i b u t o s d o s d a d o s do p o ç o . G a r a n t i r c o n s i s t ê n c i a #e l s e c o n n e c t ( u i . p u s h B u t t o n S a l v a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( salvarArquivoClick () ) ) ; #e n d i f } primeiraInicializacao = false ; inicializeComponentes () ; } void { WidgetAnaliseExploracaoDados : : i n i c i a l i z e C o m p o n e n t e s ( ) u i . l a b e l T o t a l A t r i b s E d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : d b l T o S t d S t r ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l A t r i b u t o s ( ) , 0) . c s t r ( ) ) ) ; u i . l a b e l T o t a l R e g s E d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : d b l T o S t d S t r ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l R e g i s t r o s ( ) , 0) . c s t r ( ) ) ) ; 116 117 118 const 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 t o D e l e t e . cend ( ) ; { v e c t o r <s t r i n g > &a t r i b u t o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ; Populador : : populeListWidget ( u i . l i s t W i d g e t A t r i b u t o s , a t r i b u t o s ) ; Populador : : populeArvoreTipos ( u i . treeWidgetTipos , a t r i b u t o s , T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t i p o s ( ) ) ; atualizeDadosComponentes ( a t r i b u t o s . f r o n t ( ) ) ; habilitarEventos ( true ) ; u i . p u s h B u t t o n C a r r e g a r−>s e t E n a b l e d ( t r u e ) ; } void WidgetAnaliseExploracaoDados : : currentItemChangedListWidgetAtributos ( QListWidgetItem ∗ c u r r e n t , QListWidgetItem ∗ p r e v i o u s ) { if { ( c u r r e n t == p r e v i o u s ) return ; } if { ( current ) a t u a l i z e D a d o s C o m p o n e n t e s ( c u r r e n t −>t e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ) ; } } 232 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 void { if { if { c u r r e n t −>p a r e n t ( ) == NULL) ( current ) a t u a l i z e D a d o s C o m p o n e n t e s ( c u r r e n t −>t e x t ( 0 ) . t o L a t i n 1 ( ) . d a t a ( ) ) ; } } void WidgetAnaliseExploracaoDados : : atualizeDadosComponentes ( const atributo ) string & { u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” A t u a l i z a n d o u i . l a b e l S t a t u s −>r e p a i n t ( ) ; interface . ”) ) ; populeListaEstatisticas ( atributo ) ; atualizeDadosEstatisticaGeral ( atributo ) ; ploteHistogramaGraficoBarras ( atributo ) ; u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; } void WidgetAnaliseExploracaoDados : : p o p u l e L i s t a E s t a t i s t i c a s ( const atributo ) const string & { u i . t a b l e W i d g e t E s t a t i s t i c a s −>setRowCount ( 0 ) ; v e c t o r <p a i r <s t r i n g , d o u b l e >> i n f o r m a c o e s = v e c t o r <p a i r <s t r i n g , d o u b l e >>() ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> e s t a t i s t i c a s S t r ( a t r i b u t o , informacoes ) ; Populador : : p o p u l e T a b e l a E s t a t i s t i c a ( u i . t a b l e W i d g e t E s t a t i s t i c a s , informacoes ) ; } void WidgetAnaliseExploracaoDados : : a t u a l i z e D a d o s E s t a t i s t i c a G e r a l ( c o n s t s t r i n g &a t r i b u t o ) c o n s t { const 186 187 188 C o l e t o r E s t a t i s t i c a s : : E s t a t i s t i c a G e r a l &e g = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>e s t a t i s t i c a G e r a l A t r i b u t o ( a t r i b u t o ) ; u i . l a b e l N o m e E d i t−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( a t r i b u t o . c s t r ( ) ) ) ; u i . l a b e l M i s s i n g E d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : dblToStdStr ( eg . m i s s i n g s , 0) . c s t r ( ) ) ) ; u i . l a b e l U n i c o s E d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : d b l T o S t d S t r ( eg . unicos , 0) . c s t r ( ) ) ) ; u i . l a b e l D i s t i n t o s E d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : dblToStdStr ( eg . d i s t i n t o s , 0) . c s t r ( ) ) ) ; 189 190 191 192 193 194 195 s w i t c h ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t i p o ( a t r i b u t o ) ) { c a s e QUANT CONTINUO : u i . l a b e l T i p o E d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o C o n tı́ n u o ” ) ) ; break ; c a s e QUANT DISCRETO : u i . l a b e l T i p o E d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a n t i t a t i v o Discreto ”) ) ; break ; c a s e QUALITATIVO : u i . l a b e l T i p o E d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Q u a l i t a t i v o ” ) ) ; break ; default : break ; } 196 197 198 209 210 211 212 213 || } 179 199 200 201 202 203 204 205 206 207 208 ( c u r r e n t == p r e v i o u s return ; 178 180 181 182 183 184 185 WidgetAnaliseExploracaoDados : : currentItemChangedTreeWidgetTipos ( QTreeWidgetItem ∗ c u r r e n t , QTreeWidgetItem ∗ p r e v i o u s ) } void WidgetAnaliseExploracaoDados : : ploteHistogramaGraficoBarras ( const s t r i n g &a t r i b u t o ) { s w i t c h ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t i p o ( a t r i b u t o ) ) { c a s e QUANT CONTINUO : { 233 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 ploteHistogramaQuantContinuo ( a t r i b u t o ) ; } break ; c a s e QUANT DISCRETO : { ploteGraficoBarrasQuantDiscreto ( atributo ) ; } break ; c a s e QUALITATIVO : { ploteGraficoBarrasQualitativo ( atributo ) ; } break ; } } void WidgetAnaliseExploracaoDados : : ploteHistogramaQuantContinuo ( const s t r i n g &a t r i b u t o ) { v e c t o r <i n t > f r e q u e n c i a s = v e c t o r <i n t >() ; v e c t o r <C o l e t o r E s t a t i s t i c a s : : C l a s s e Q u a n t> c l a s s e s = v e c t o r < C o l e t o r E s t a t i s t i c a s : : C l a s s e Q u a n t >() ; GeradorGraficos : : gerarHistogramaQuantContinuo ( atributo , c l a s s e s , frequencias ) ; 234 235 236 237 238 239 240 241 242 243 if { removerGraficoAtual () ; h i s t o g r a m a = new H i s t o g r a m a Q u a n t C o n t i n u o ( f r e q u e n c i a s , c l a s s e s , c l a s s e s . s i z e ( ) , u i . w i d g e t H i s t o g r a m a G r a f i c o B a r r a s ) ; // d e s t r u i d o em r e m o v e r H i s t r o g r a m a A t u a l e em ˜ W i d g e t A n a l i s e E x p l o r a c a o D a d o s h i s t o g r a m a −>s e t A x i s S c a l e D r a w ( QwtPlot : : xBottom , new E s c a l a N o m e s ( ) ) ; // Q P a l e t t e p = h i s t o g r a m a −>p a l e t t e ( ) ; // p . s e t C o l o r ( Q P a l e t t e : : Window , Qt : : r e d ) ; // h i s t o g r a m a −>s e t P a l e t t e ( p ) ; // h i s t o g r a m a −>s e t C a n v a s B a c k g r o u n d ( QColor ( Qt : : g r e e n ) ) ; u i . w i d g e t H i s t o g r a m a G r a f i c o B a r r a s −>l a y o u t ( )−>addWidget ( h i s t o g r a m a ) ; h i s t o g r a m a −>s e t A x i s T i t l e ( QwtPlot : : xBottom , Q S t r i n g : : f r o m L a t i n 1 ( atributo . c str () ) ) ; h i s t o g r a m a −>s e t A x i s T i t l e ( QwtPlot : : y L e f t , Q S t r i n g : : f r o m L a t i n 1 ( ” F r e q u ê n c i a ” ) ) ; 255 256 257 258 259 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; u i . g r o u p B o x H i s t o g r a m a G r a f i c o B a r r a s −>s e t T i t l e ( Q S t r i n g : : f r o m L a t i n 1 ( ” Histograma ” ) ) ; 260 261 262 } 263 264 265 266 267 { 280 281 282 frequencias . size () ) } 254 277 278 279 != return ; 244 245 246 247 248 249 250 251 252 253 268 269 270 271 272 273 274 275 276 ( classes . size () void WidgetAnaliseExploracaoDados : : ploteGraficoBarrasQuantDiscreto ( const s t r i n g &a t r i b u t o ) v e c t o r <i n t > f r e q u e n c i a s = v e c t o r <i n t >() ; v e c t o r <s t r i n g > c a t e g o r i a s = v e c t o r <s t r i n g >() ; GeradorGraficos : : gerarGraficoBarrasQuantDiscreto ( atributo , frequencias ) ; if { ( frequencias . size () != categorias , categorias . size () ) return ; } removerGraficoAtual () ; u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P l o t a n d o ); u i . l a b e l S t a t u s −>r e p a i n t ( ) ; o histograma . . . ” ) g r a f i c o B a r r a s = new G r a f i c o B a r r a s Q u a l Q u a n t D i s c r e t o ( c a t e g o r i a s , frequencias , c a t e g o r i a s . s i z e () , ui . widgetHistogramaGraficoBarras ) ; u i . w i d g e t H i s t o g r a m a G r a f i c o B a r r a s −>l a y o u t ( )−>addWidget ( g r a f i c o B a r r a s ) ; g r a f i c o B a r r a s −>s e t A x i s T i t l e ( QwtPlot : : xBottom , atributo . c str () ) ) ; QString : : fromLatin1 ( 234 g r a f i c o B a r r a s −>s e t A x i s T i t l e ( QwtPlot : : y L e f t , F r e q u ê n c i a ” ) ) ; 283 284 285 286 287 288 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; u i . g r o u p B o x H i s t o g r a m a G r a f i c o B a r r a s −>s e t T i t l e ( Q S t r i n g : : f r o m L a t i n 1 ( ” G r á f i c o de b a r r a s ” ) ) ; 289 290 } void 291 292 293 294 295 { WidgetAnaliseExploracaoDados : : p l o t e G r a f i c o B a r r a s Q u a l i t a t i v o ( const s t r i n g &a t r i b u t o ) v e c t o r <i n t > f r e q u e n c i a s = v e c t o r <i n t >() ; v e c t o r <s t r i n g > c a t e g o r i a s = v e c t o r <s t r i n g >() ; GeradorGraficos : : gerarGraficoBarrasQualitativo ( atributo , frequencias ) ; 296 297 298 299 300 301 302 303 304 305 306 307 if { u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P l o t a n d o u i . l a b e l S t a t u s −>r e p a i n t ( ) ; o g r á f i c o . . . ” ) ) ; g r a f i c o B a r r a s = new G r a f i c o B a r r a s Q u a l Q u a n t D i s c r e t o ( c a t e g o r i a s , frequencias , c a t e g o r i a s . s i z e () , ui . widgetHistogramaGraficoBarras ) ; u i . w i d g e t H i s t o g r a m a G r a f i c o B a r r a s −>l a y o u t ( )−>addWidget ( g r a f i c o B a r r a s ) ; g r a f i c o B a r r a s −>s e t A x i s T i t l e ( QwtPlot : : xBottom , Q S t r i n g : : f r o m L a t i n 1 ( atributo . c str () ) ) ; g r a f i c o B a r r a s −>s e t A x i s T i t l e ( QwtPlot : : y L e f t , Q S t r i n g : : f r o m L a t i n 1 ( ” F r e q u ê n c i a ” ) ) ; u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; u i . g r o u p B o x H i s t o g r a m a G r a f i c o B a r r a s −>s e t T i t l e ( Q S t r i n g : : f r o m L a t i n 1 ( ” G r á f i c o de b a r r a s ” ) ) ; } void { WidgetAnaliseExploracaoDados : : removerGraficoAtual ( ) if { ( graficoBarras ) u i . w i d g e t H i s t o g r a m a G r a f i c o B a r r a s −>l a y o u t ( )−>removeWidget ( graficoBarras ) ; delete graficoBarras ; g r a f i c o B a r r a s = NULL ; 324 325 326 327 328 329 330 345 346 347 348 349 350 351 352 categorias . size () ) removerGraficoAtual () ; 312 313 314 315 316 341 342 343 344 != } 311 331 332 333 334 335 336 337 338 339 340 ( frequencias . size () categorias , return ; 308 309 310 317 318 319 320 321 322 323 QString : : fromLatin1 ( ” } if { ( histograma ) u i . w i d g e t H i s t o g r a m a G r a f i c o B a r r a s −>l a y o u t ( )−>removeWidget ( histograma ) ; delete histograma ; h i s t o g r a m a = NULL ; } } void { WidgetAnaliseExploracaoDados : : removerAtributoClick ( ) if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l A t r i b u t o s ( ) == 1 ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Não é p o s sı́ v e l r e m o v e r o ú l t i m a a t r i b u t o ! ” ) ) ; return ; } u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Removendo selecionados . . . ”) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; bool bool removerTodos = t r u e ; removerNenhum = t r u e ; const for atributos int ( int c o u n t = u i . l i s t W i d g e t A t r i b u t o s −>c o u n t ( ) ; i = 0; i < c o u n t && ( r e m o v e r T o d o s || removerNenhum ) ; ++i ) 235 { 353 354 r e m o v e r T o d o s = r e m o v e r T o d o s && u i . l i s t W i d g e t A t r i b u t o s −>i t e m ( i )−> c h e c k S t a t e ( ) == Qt : : Checked ; removerNenhum = removerNenhum && u i . l i s t W i d g e t A t r i b u t o s −>i t e m ( i )−> c h e c k S t a t e ( ) == Qt : : Unchecked ; 355 } 356 357 358 359 360 361 362 363 364 365 366 if { ( ! ( removerTodos // Remove o s totalRemovidos = 0; for { ( int if 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 i = 0; da tabela de registros i < c o u n t ; ++i ) ( u i . l i s t W i d g e t A t r i b u t o s −>i t e m ( i )−>c h e c k S t a t e ( ) == Qt : : Checked ) { r e m o v e r A t r i b u t o ( u i . l i s t W i d g e t A t r i b u t o s −>i t e m ( i )−>t e x t ( ) . toStdString () ) ; ++t o t a l R e m o v i d o s ; 369 370 371 372 373 374 375 376 377 385 386 387 388 removerNenhum ) ) int 367 368 378 379 380 381 382 383 384 || atributos } } inicializeComponentes () ; } else { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Não é p o s sı́ v e l r e m o v e r t o d o s /nenhum o s a t r i b u t o s ! ” )); } u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; } void WidgetAnaliseExploracaoDados : : removerAtributo ( const const s t r i n g &a t r i b u t o ) { if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l A t r i b u t o s ( ) <= 1 ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Não é p o s sı́ v e l r e m o v e r o ú l t i m o a t r i b u t o ! ” ) ) ; return ; } T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e m o v e r A t r i b u t o ( a t r i b u t o ) ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>r e m o v e r A t r i b u t o ( a t r i b u t o ) ; } void { WidgetAnaliseExploracaoDados : : s e l e c i o n a r T o d o s A t r i b u t o s C l i c k ( ) const for { int ( int const c o u n t = u i . l i s t W i d g e t A t r i b u t o s −>c o u n t ( ) ; i = 0; i < count ; i ++) u i . l i s t W i d g e t A t r i b u t o s −>i t e m ( i )−>s e t C h e c k S t a t e ( Qt : : Checked ) ; } } void { WidgetAnaliseExploracaoDados : : i n v e r t e r S e l e c a o C l i c k ( ) const int const c o u n t = u i . l i s t W i d g e t A t r i b u t o s −>c o u n t ( ) ; QListWidgetItem ∗ item ; for { ( int i = 0; i < count ; i ++) i t e m = u i . l i s t W i d g e t A t r i b u t o s −>i t e m ( i ) ; i t e m−>s e t C h e c k S t a t e ( i t e m−>c h e c k S t a t e ( ) == Qt : : Checked ? Qt : : Unchecked : Qt : : Checked ) ; } } void { WidgetAnaliseExploracaoDados : : e d i c a o C l i c k ( ) u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” C a r r e g a n d o . . . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; v e c t o r <s i z e t > t o d o s I n d i c e s = v e c t o r <s i z e t >() ; 236 426 T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o d o s I n d i c e s R e g i s t r o s ( t o d o s I n d i c e s ); 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 D i a l o g E d i c a o D a d o s ∗ d i a l o g E d i c a o D a d o s = new D i a l o g E d i c a o D a d o s ( t o d o s I n d i c e s , t h i s ) ; // d e l e t a d o a q u i a b a i x o ; u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; d i a l o g E d i c a o D a d o s −>e x e c ( ) ; delete dialogEdicaoDados ; inicializeComponentes () ; } void { WidgetAnaliseExploracaoDados : : v i s u a l i z a r G r a f i c o s C l i c k ( ) const u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” C a r r e g a n d o . . . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; D i a l o g V i s u a l i z a r G r a f i c o s ∗ d i a l o g V i s u a l i z a r G r a f i c o s = new D i a l o g V i s u a l i z a r G r a f i c o s ( ) ; // d e l e t a d o a q u i a b a i x o u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; d i a l o g V i s u a l i z a r G r a f i c o s −>e x e c ( ) ; delete dialogVisualizarGraficos ; } void { WidgetAnaliseExploracaoDados : : salvarArquivoClick ( ) Q S t r i n g f i l t r o = Q S t r i n g : : f r o m L a t i n 1 ( ” A r q u i v o Texto com Ponto−e−Vı́ r g u l a de D e l i m i t a d o r ( ∗ . c s v ) ” ) ; const QString d i r e t o r i o A r q u i v o = QFileDialog : : getSaveFileName ( t h i s , ” S a l v a r A r q u i v o ” , QDir : : c u r r e n t P a t h ( ) , Q S t r i n g : : f r o m L a t i n 1 ( ” A r q u i v o Texto com Ponto−e−Vı́ r g u l a de D e l i m i t a d o r ( ∗ . c s v ) ; ; A r q u i v o Texto com T a b u l a ç ã o de D e l i m i t a d o r ( ∗ . c s v ) ” ) , &f i l t r o ) ; 457 458 459 460 461 462 463 464 465 466 467 468 string if { delimitador ; ( d i r e t o r i o A r q u i v o . isEmpty ( ) ) return ; } if 469 470 471 472 { 473 474 475 476 477 478 479 480 481 { ( f i l t r o == Q S t r i n g : : f r o m L a t i n 1 ( ” A r q u i v o Delimitador ( ∗ . csv ) ” ) ) Texto com Ponto−e−Vı́ r g u l a de delimitador = ” ; ” ; } else i f ( f i l t r o == Q S t r i n g : : f r o m L a t i n 1 ( ” A r q u i v o Delimitador ( ∗ . csv ) ” ) ) Texto com T a b u l a ç ã o de d e l i m i t a d o r = ”\ t ” ; } else { return ; } if ( ! salveTabelaParaArqTexto ( ( s t r i n g ) () , delimitador ) ) 482 483 { 484 485 486 487 } else { 488 489 490 491 492 493 494 495 496 } d i r e t o r i o A r q u i v o . toLatin1 ( ) . data QMessageBox : : c r i t i c a l (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” E r r o ” ) , f r o m L a t i n 1 ( ” E r r o ao s a l v a r a r q u i v o ! ” ) ) ; QString : : QMessageBox : : i n f o r m a t i o n (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” S u c e s s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” A r q u i v o s a l v o com s u c e s s o ! ” ) ) ; } bool WidgetAnaliseExploracaoDados : : salveTabelaParaArqTexto ( c o n s t s t r i n g &a r q u i v o , c o n s t s t r i n g &d e l i m i t a d o r ) c o n s t { u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” S a l v a n d o em a r q u i v o . . . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 237 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 try { ofstream arqSaida ( arquivo . c s t r () ) ; const TabelaDeRegistros : : MapRegistros &r e g i s t r o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o s ( ) ; c o n s t v e c t o r <s t r i n g > &a t r i b u t o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s ( ) ; const for { s i z e t c o u n t C o l u n a s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> totalAtributos () ; ( size t j = 0; j < countColunas ; j ++) a r q S a i d a << a t r i b u t o s [ j ] ; if { ( j < ( countColunas − 1) ) a r q S a i d a << d e l i m i t a d o r ; } } a r q S a i d a << e n d l ; f o r ( TabelaDeRegistros : : MapRegistros : : c o n s t i t e r a t o r c i t R e g i s t r o = r e g i s t r o s . cbegin () ; 520 c i t R e g i s t r o != r e g i s t r o s . c e n d ( ) ; 521 c i t R e g i s t r o ++) 522 { 523 c o n s t R e g i s t r o & r e g i s t r o = c i t R e g i s t r o −>s e c o n d ; 524 525 f o r ( s i z e t j = 0 ; j < c o u n t C o l u n a s ; ++j ) 526 { 527 a r q S a i d a << r e g i s t r o . r e t o r n e V a l o r ( j )−>v a l o r S t r ( ) ; 528 529 i f ( j < ( countColunas − 1) ) 530 { 531 a r q S a i d a << d e l i m i t a d o r ; 532 } 533 } 534 a r q S a i d a << e n d l ; 535 } 536 } 537 catch ( . . . ) 538 { 539 } 540 541 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; 542 u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 543 544 return true ; 545 } 546 547 #i f n d e f TCC RODOLFO 548 v o i d W i d g e t A n a l i s e E x p l o r a c a o D a d o s : : c a r r e g a r B D C l i c k ( ) 549 { 550 v e c t o r <s h a r e d p t r <PocoLog>> v e t o r = I n t e g r a c a o T r e i n a m e n t o : : o b t e r P o c o s ( ) ; 551 E s c o l h a P o c o ∗ c a r r e g a r = new E s c o l h a P o c o ( v e t o r ) ; // é d e l e t a d o no a c c e p t da j e n e l a c a r r e g a r 552 c o n n e c t ( c a r r e g a r , SIGNAL ( i t e m S e l e c t e d ( s h a r e d p t r <PocoLog >) ) , t h i s , SLOT ( p o c o S e l e c i o n a d o ( s h a r e d p t r <PocoLog >) ) ) ; 553 554 c a r r e g a r −>e x e c ( ) ; 555 } 556 557 v o i d W i d g e t A n a l i s e E x p l o r a c a o D a d o s : : p o c o S e l e c i o n a d o ( s h a r e d p t r <PocoLog> p ) 558 { 559 habilitarEventos ( false ) ; 560 u i . p u s h B u t t o n C a r r e g a r−>s e t E n a b l e d ( f a l s e ) ; 561 562 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” C a r r e g a n d o do BD . . . ” ) ) ; 563 u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 564 565 bool sucesso = f a l s e ; 566 567 v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> c o l u n a s = v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >>() ; 568 v e c t o r <TipoDado AT> t i p o s = v e c t o r <TipoDado AT >() ; 569 v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; 570 238 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 try { c o m u n s e n g : : Dados d a d o s B a n c o = I n t e g r a c a o T r e i n a m e n t o : : obterRegistrosParaAnaliseDeDados (p) ; v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = d a d o s B a n c o . nomesColunasDadosQuant ( ) ; v e c t o r <s t r i n g > a t r i b u t o s Q u a l i = d a d o s B a n c o . n o m e s C o l u n a s D a d o s Q u a l i ( ) ; b o o s t : : n u m e r i c : : u b l a s : : m a t r i x<d o u b l e > dadosQuant = d a d o s B a n c o . dadosQuant ( ) ; b o o s t : : n u m e r i c : : u b l a s : : m a t r i x<s t r i n g > d a d o s Q u a l i = d a d o s B a n c o . dadosQuali ( ) ; const const const size t size t size t t o t a l L i n h a s Q u a n t = dadosQuant . s i z e 1 ( ) ; t o t a l A t r i b u t o s Q u a n t = dadosQuant . s i z e 2 ( ) ; totalAtributosQuant2 = atributosQuant . s i z e () ; const const const size t size t size t t o t a l L i n h a s Q u a l i = dadosQuali . s i z e 1 ( ) ; t o t a l A t r i b u t o s Q u a l i = dadosQuali . s i z e 2 ( ) ; totalAtributosQuali2 = atributosQuali . size () ; if ( t o t a l A t r i b u t o s Q u a n t != 0 && t o t a l A t r i b u t o s Q u a l i t o t a l L i n h a s Q u a n t != t o t a l L i n h a s Q u a l i ) 590 591 { 592 593 594 595 } else { 596 597 598 599 600 601 602 } else { != 0 && QMessageBox : : c r i t i c a l ( t h i s , Q S t r i n g : : f r o m L a t i n 1 ( ” E r r o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” I n c o n s i s t ê n c i a n o s d a d o s ! ” ) ) ; if ( t o t a l L i n h a s Q u a n t == 0 && t o t a l L i n h a s Q u a l i == 0 ) QMessageBox : : c r i t i c a l ( t h i s , Q S t r i n g : : f r o m L a t i n 1 ( ” E r r o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Não há nenhum r e g i s t r o ! ” ) ) ; atributos . reserve ( totalAtributosQuant + totalAtributosQuali ) ; colunas . reserve ( totalAtributosQuant + totalAtributosQuali ) ; f o r ( s i z e t colunaIdx = 0; c o l u n a I d x ++) colunaIdx < totalAtributosQuant ; { 603 604 605 606 607 608 609 610 611 612 a t r i b u t o s . push back ( atributosQuant [ colunaIdx ] ) ; t i p o s . p u s h b a c k (QUANT CONTINUO) ; c o l u n a s . p u s h b a c k ( v e c t o r <V a l o r B a s e ∗ c o n s t >() ) ; v e c t o r <V a l o r B a s e ∗ c o n s t > &v a l o r e s C o l u n a = c o l u n a s . b a c k ( ) ; valoresColuna . r e s e r v e ( totalLinhasQuant ) ; for ( s i z e t linhaIdx = 0; l i n h a I d x ++) 613 614 { 615 616 617 618 } linhaIdx < totalLinhasQuant ; valoresColuna . push back ( TabelaDeRegistros : : g e r a r V a l o r Q u a n t ( dadosQuant ( l i n h a I d x , c o l u n a I d x ) ) ) ; } f o r ( s i z e t colunaIdx = 0; c o l u n a I d x ++) colunaIdx < totalAtributosQuali ; { 619 620 621 622 623 624 625 626 627 628 a t r i b u t o s . push back ( a t r i b u t o s Q u a l i [ colunaIdx ] ) ; t i p o s . p u s h b a c k (QUALITATIVO) ; c o l u n a s . p u s h b a c k ( v e c t o r <V a l o r B a s e ∗ c o n s t >() ) ; v e c t o r <V a l o r B a s e ∗ c o n s t > &v a l o r e s C o l u n a = c o l u n a s . b a c k ( ) ; valoresColuna . reserve ( totalLinhasQuali ) ; for ( s i z e t linhaIdx = 0; l i n h a I d x ++) 629 630 { 631 632 633 634 635 636 637 638 } linhaIdx < totalLinhasQuali ; valoresColuna . push back ( TabelaDeRegistros : : gerarValor ( QUALITATIVO, d a d o s Q u a l i ( l i n h a I d x , c o l u n a I d x ) ) ) ; } sucesso = true ; } } catch { (...) 239 639 QMessageBox : : c r i t i c a l ( t h i s , Q S t r i n g : : f r o m L a t i n 1 ( ” E r r o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” O c o r r e u um e r r o ao t e n t a r c a r r e g a r o s d a d o s ! ” ) ) ; } 640 641 642 643 644 645 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; QMessageBox m s g Q u e s t i o n ( QMessageBox : : Q u e s t i o n , ” O p c i o n a l ” , Q S t r i n g : : f r o m L a t i n 1 ( ” D e s e j a a b r i r o a s s i s t e n t e de c a r r e g a m e n t o d o s d a d o s ? ” ) , QMessageBox : : Yes | QMessageBox : : No ) ; m s g Q u e s t i o n . b u t t o n ( QMessageBox : : Yes )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Sim ” )); m s g Q u e s t i o n . b u t t o n ( QMessageBox : : No )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ”Não” ) ); 646 647 648 649 650 651 652 653 if { ( sucesso ) if { ( m s g Q u e s t i o n . e x e c ( ) == QMessageBox : : Yes ) D i a l o g I m p o r t a c a o D a d o s ∗ d i a l o g I m p o r t a c a o D a d o s = new DialogImportacaoDados ( t h i s ) ; // d i a l o g I m p o r t a c a o D a d o s −>s e t A t t r i b u t e ( Qt : : WA DeleteOnClose ) ; nao d e s c o m e n t a r , p r o b l e m a s em a l g u m a s m á q u i n a s 654 655 656 657 658 659 d i a l o g I m p o r t a c a o D a d o s −>s e t D a d o s ( a t r i b u t o s , d i a l o g I m p o r t a c a o D a d o s −>e x e c ( ) ; // d e l e t e d i a l o g I m p o r t a c a o D a d o s ; a l g u m a s m á q u i n a s 660 661 662 663 664 665 666 667 668 669 670 671 672 673 693 694 695 696 697 698 699 700 701 702 703 704 705 descomentar , colunas ) ; p r o b l e m a s em u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l R e g i s t r o s ( ) > 0 ) i n i c i a l i z e () ; } u i . p r o g r e s s B a r −>s e t V a l u e ( 0 ) ; } else { ThreadWorkerColetarEstatisticas∗ workerColetarEstatisticas = new T h r e a d W o r k e r C o l e t a r E s t a t i s t i c a s ( a t r i b u t o s , t i p o s , c o l u n a s , t h i s ) ; // d e l e t a d o quando d e s t r o i t h r e a d C o n t r o l l e r ou quando t h r e a d C o n t r o l l e r s e t a um novo worker T h r e a d C o n t r o l l e r ∗ t c = new T h r e a d C o n t r o l l e r ( ) ; c o n n e c t ( t c , SIGNAL ( e x e c u c a o F i n a l i z a d a ( T h r e a d C o n t r o l l e r ∗ ) ) , t h i s , SLOT( d e l e t e C o n t r o l l e r ( T h r e a d C o n t r o l l e r ∗ ) ) ) ; t c−>s e t a r W o r k e r ( w o r k e r C o l e t a r E s t a t i s t i c a s ) ; t c−>i n i c i a r E x e c u c a o W o r k e r ( t h i s ) ; 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 nao tipos , } } else { habilitarEventos ( true ) ; u i . p u s h B u t t o n C a r r e g a r−>s e t E n a b l e d ( t r u e ) ; } } void { WidgetAnaliseExploracaoDados : : salvarBDClick ( ) bool temMissingOuInvalido = f a l s e ; const T a b e l a D e R e g i s t r o s : : M a p R e g i s t r o s &r e g s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o s ( ) ; for ( TabelaDeRegistros : : MapRegistros : : c o n s t i t e r a t o r c i t R e g i s t r o = r e g s . cbegin () ; c i t R e g i s t r o != r e g s . c e n d ( ) && ! t e m M i s s i n g O u I n v a l i d o ; c i t R e g i s t r o ++) { c o n s t R e g i s t r o & r e g i s t r o = c i t R e g i s t r o −>s e c o n d ; i f ( r e g i s t r o . algumValorInvalidoOuMissing () ) { temMissingOuInvalido = true ; } } if ( temMissingOuInvalido ) 240 { 706 707 QMessageBox m s g Q u e s t i o n ( QMessageBox : : Q u e s t i o n , ” A v i s o ” , Q S t r i n g : : fromLatin1 ( ” E x i s t e m v a l o r e s i n v á l i d o s ou m i s s i n g s n o s d a d o s ! \ n ” ”Os r e g i s t r o s que contenham v a l o r e s m i s s i n g s ou i n v á l i d o s não s e r ã o s a l v o s . ” ” D e s e j a c o n t i n u a r mesmo a s s i m ?\ n ” ) , QMessageBox : : Yes | QMessageBox : : No ) ; m s g Q u e s t i o n . b u t t o n ( QMessageBox : : Yes )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Sim ” ) ) ; m s g Q u e s t i o n . b u t t o n ( QMessageBox : : No )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Não” ) ) ; 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 if { return ; } } SalvarNoBD ∗ s a l v a r = new SalvarNoBD ( ” ” , ” ” , t h i s ) ; c o n n e c t ( s a l v a r , SIGNAL ( i t e m S a v e d A s ( s t r i n g , s t r i n g ) ) , salvarBD ( s t r i n g , s t r i n g ) ) ) ; s a l v a r −>e x e c ( ) ; // d e l e t e s a l v a r ; t h i s , SLOT( } void WidgetAnaliseExploracaoDados : : salvarBD ( s t r i n g descricao ) codigoPetro , string { if { ( DaoPoco : : e x i s t e ( c o d i g o P e t r o ) ) s t r i n g msg = ” Poço ” + c o d i g o P e t r o + ” com o u t r o nome . ” ; 731 732 j á existe ! Você deve QMessageBox : : c r i t i c a l ( t h i s , Q S t r i n g : : f r o m L a t i n 1 ( ” E r r o ” ) , f r o m L a t i n 1 ( msg . c s t r ( ) ) ) ; 733 734 735 SalvarNoBD ∗ s a l v a r = new SalvarNoBD ( c o d i g o P e t r o , ” ” , c o n n e c t ( s a l v a r , SIGNAL ( i t e m S a v e d A s ( s t r i n g , s t r i n g ) ) , salvarBD ( s t r i n g , s t r i n g ) ) ) ; s a l v a r −>e x e c ( ) ; // d e l e t e s a l v a r ; return ; 736 737 738 739 740 741 742 743 744 salvar QString : : this ) ; t h i s , SLOT( } habilitarEventos ( false ) ; u i . p u s h B u t t o n C a r r e g a r−>s e t E n a b l e d ( f a l s e ) ; u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” S a l v a n d o . . . ”) ) ; u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 745 746 747 748 749 750 751 no Banco de dados try { s t d : : v e c t o r <s t d : : v e c t o r <s t d : : s t r i n g >> r e g i s t r o s ; ThreadWorkerSalvarBD ∗ w o r k e r S a l v a r = new ThreadWorkerSalvarBD ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( ) , c o d i g o P e t r o , t h i s ) ; // t h r e a d C o n t r o l l e r ou quando d e l e t a d o quando d e s t r o i t h r e a d C o n t r o l l e r s e t a um novo w o r k e r T h r e a d C o n t r o l l e r ∗ t c = new T h r e a d C o n t r o l l e r ( ) ; c o n n e c t ( t c , SIGNAL ( e x e c u c a o F i n a l i z a d a ( T h r e a d C o n t r o l l e r ∗ ) ) , t h i s , SLOT( d e l e t e C o n t r o l l e r ( T h r e a d C o n t r o l l e r ∗ ) ) ) ; t c−>s e t a r W o r k e r ( w o r k e r S a l v a r ) ; t c−>i n i c i a r E x e c u c a o W o r k e r ( t h i s ) ; 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 ( m s g Q u e s t i o n . e x e c ( ) == QMessageBox : : No ) } catch ( . . . ) { QMessageBox : : c r i t i c a l ( t h i s , Q S t r i n g : : f r o m L a t i n 1 ( ” E r r o ” ) , f r o m L a t i n 1 ( ” E r r o ao s a l v a r no Banco de d a d o s ! ” ) ) ; QString : : habilitarEventos ( true ) ; u i . p u s h B u t t o n C a r r e g a r−>s e t E n a b l e d ( t r u e ) ; } } void { WidgetAnaliseExploracaoDados : : fimSalvarBD ( b o o l if { sucesso ) (! sucesso ) QMessageBox : : c r i t i c a l ( t h i s , QString : : fromLatin1 ( ” Erro ” ) , QString : : 241 fromLatin1 ( ” Erro 772 773 774 775 ao salvar no Banco de dados ! ” ) ) ; } else { QMessageBox : : i n f o r m a t i o n ( t h i s , Q S t r i n g : : f r o m L a t i n 1 ( ” S u c e s s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” Poço s a l v o com s u c e s s o ! ” ) ) ; 776 } 777 778 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; 779 u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 780 781 habilitarEventos ( true ) ; 782 u i . p u s h B u t t o n C a r r e g a r−>s e t E n a b l e d ( t r u e ) ; 783 784 u i . p r o g r e s s B a r −>s e t V a l u e ( 0 ) ; 785 } 786 #e n d i f 787 788 v o i d W i d g e t A n a l i s e E x p l o r a c a o D a d o s : : c a r r e g a r A r q u i v o C l i c k ( ) 789 { 790 D i a l o g I m p o r t a c a o D a d o s ∗ d i a l o g I m p o r t a c a o D a d o s = new DialogImportacaoDados ( t h i s ) ; 791 // d i a l o g I m p o r t a c a o D a d o s −>s e t A t t r i b u t e ( Qt : : WA DeleteOnClose ) ; nao d e s c o m e n t a r , p r o b l e m a s em a l g u m a s m á q u i n a s 792 793 d i a l o g I m p o r t a c a o D a d o s −>e x e c ( ) ; 794 // d e l e t e d i a l o g I m p o r t a c a o D a d o s ; nao d e s c o m e n t a r , p r o b l e m a s em a l g u m a s m á q u i n a s 795 796 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; 797 u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 798 799 i f ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l R e g i s t r o s ( ) > 0 ) 800 { 801 i n i c i a l i z e () ; 802 } 803 804 u i . p r o g r e s s B a r −>s e t V a l u e ( 0 ) ; 805 } 806 807 v o i d W i d g e t A n a l i s e E x p l o r a c a o D a d o s : : f i m C o l e t a E s t a t i s t i c a s ( c o n s t v e c t o r < string> ∗atributos ) 808 { 809 delete atributos ; 810 811 u i . l a b e l S t a t u s −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” P r o n t o . ” ) ) ; 812 u i . l a b e l S t a t u s −>r e p a i n t ( ) ; 813 814 i n i c i a l i z e () ; 815 816 u i . p r o g r e s s B a r −>s e t V a l u e ( 0 ) ; 817 } 818 819 v o i d W i d g e t A n a l i s e E x p l o r a c a o D a d o s : : o n U p d a t e P r o g r e s s o ( i n t ∗ p o r c e n t a g e m ) 820 { 821 u i . p r o g r e s s B a r −>s e t V a l u e ( ∗ p o r c e n t a g e m ) ; 822 d e l e t e porcentagem ; 823 } 824 825 v o i d W i d g e t A n a l i s e E x p l o r a c a o D a d o s : : d e l e t e C o n t r o l l e r ( T h r e a d C o n t r o l l e r ∗ t c ) 826 { 827 t o D e l e t e . push back ( tc ) ; 828 } Listagem B.72: widget analise exploracao dados.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 #i f n d e f WIDGET ANALISE EXPLORACAO DADOS H #d e f i n e WIDGET ANALISE EXPLORACAO DADOS H #i n c l u d e ” u i w i d g e t a n a l i s e e x p l o r a c a o d a d o s . h” #i n c l u d e ” w i d g e t p r o g r e s s o . h” #i n c l u d e #i n c l u d e #i n c l u d e ” t h r e a d c o n t r o l l e r . h” ” h i s t o g r a m a q u a n t c o n t i n u o . h” ” g r a f i c o b a r r a s q u a l q u a n t d i s c r e t o . h” #i n c l u d e ” enums at . h” 242 14 #i f n d e f TCC RODOLFO 15 #i n c l u d e ” p o c o l o g . h ” 16 #e n d i f 17 18 u s i n g n a m e s p a c e s t d ; 19 20 c l a s s W i d g e t A n a l i s e E x p l o r a c a o D a d o s : p u b l i c W i d g e t P r o g r e s s o 21 { 22 Q OBJECT 23 24 p u b l i c : 25 W i d g e t A n a l i s e E x p l o r a c a o D a d o s ( QWidget ∗ p a r e n t = NULL) ; 26 ˜ WidgetAnaliseExploracaoDados ( ) ; 27 28 p r i v a t e : 29 Ui : : W i d g e t A n a l i s e E x p l o r a c a o D a d o s u i ; 30 HistogramaQuantContinuo ∗ h i s t o g r a m a ; 31 GraficoBarrasQualQuantDiscreto ∗ g r a f i c o B a r r a s ; 32 bool primeiraInicializacao ; 33 v e c t o r <T h r e a d C o n t r o l l e r ∗> toDelete ; 34 35 void h a b i l i t a r E v e n t o s ( const bool h a b i l i t a d o ) const ; 36 v o i d a t u a l i z e D a d o s C o m p o n e n t e s ( c o n s t s t r i n g &a t r i b u t o ) ; 37 v o i d p o p u l e L i s t a E s t a t i s t i c a s ( c o n s t s t r i n g &a t r i b u t o ) c o n s t ; 38 v o i d a t u a l i z e D a d o s E s t a t i s t i c a G e r a l ( c o n s t s t r i n g &a t r i b u t o ) c o n s t ; 39 v o i d p l o t e H i s t o g r a m a G r a f i c o B a r r a s ( c o n s t s t r i n g &a t r i b u t o ) ; 40 v o i d p l o t e H i s t o g r a m a Q u a n t C o n t i n u o ( c o n s t s t r i n g &a t r i b u t o ) ; 41 v o i d p l o t e G r a f i c o B a r r a s Q u a n t D i s c r e t o ( c o n s t s t r i n g &a t r i b u t o ) ; 42 v o i d p l o t e G r a f i c o B a r r a s Q u a l i t a t i v o ( c o n s t s t r i n g &a t r i b u t o ) ; 43 void removerGraficoAtual () ; 44 v o i d r e m o v e r A t r i b u t o ( c o n s t s t r i n g &a t r i b u t o ) c o n s t ; 45 bool salveTabelaParaArqTexto ( 46 c o n s t s t r i n g &a r q u i v o , 47 c o n s t s t r i n g &d e l i m i t a d o r ) c o n s t ; 48 bool d e s e j a S a l v a r ( const char ∗s ) const ; 49 void i n i c i a l i z e () ; 50 void inicializeComponentes () ; 51 void c o l e t a E s t a t i s t i c a s T i p o () const ; 52 53 p r i v a t e s l o t s : 54 void currentItemChangedListWidgetAtributos ( QListWidgetItem ∗ c u r r e n t , QListWidgetItem ∗ p r e v i o u s ) ; 55 v o i d c u r r e n t I t e m C h a n g e d T r e e W i d g e t T i p o s ( QTreeWidgetItem ∗ c u r r e n t , QTreeWidgetItem ∗ p r e v i o u s ) ; 56 void removerAtributoClick () ; 57 void selecionarTodosAtributosClick () const ; 58 void i n v e r t e r S e l e c a o C l i c k () const ; 59 void edicaoClick () ; 60 void v i s u a l i z a r G r a f i c o s C l i c k () const ; 61 #i f n d e f TCC RODOLFO 62 void carregarBDClick () ; 63 void salvarBDClick () ; 64 #e n d i f 65 void carregarArquivoClick () ; 66 void salvarArquivoClick () ; 67 68 p u b l i c s l o t s : 69 #i f n d e f TCC RODOLFO 70 v i r t u a l void onUpdateProgresso ( StatusThread ∗) {}; 71 v o i d p o c o S e l e c i o n a d o ( s h a r e d p t r <PocoLog> p ) ; 72 void salvarBD ( s t r i n g codigoPetro , s t r i n g d e s c r i c a o ) ; 73 void fimSalvarBD ( b o o l s u c e s s o ) ; 74 #e n d i f 75 v i r t u a l void onUpdateProgresso ( i n t ∗ porcentagem ) ; 76 void d e l e t e C o n t r o l l e r ( ThreadController ∗ tc ) ; 77 v o i d f i m C o l e t a E s t a t i s t i c a s ( c o n s t v e c t o r <s t r i n g > ∗ a t r i b u t o s ) ; 78 } ; 79 80 #e n d i f // WIDGET ANALISE EXPLORACAO DADOS H Listagem B.73: widget analise exploracao dados.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >W i d g e t A n a l i s e E x p l o r a c a o D a d o s </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t A n a l i s e E x p l o r a c a o D a d o s ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 243 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 <y>0</y> <width >951</width> <h e i g h t >744</ h e i g h t > </ r e c t > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >825</width> <h e i g h t >635</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” w i n d o w T i t l e ”> <s t r i n g >A n á l i s e e Tratamento d o s Dados</ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 4 ”> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 2 ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” f o n t ”> <f o n t > <p o i n t s i z e >17</ p o i n t s i z e > </ f o n t > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >A n á l i s e e Tratamento d o s Dados</ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> <i t e m> <w i d g e t c l a s s =” Q S p l i t t e r ” name=” s p l i t t e r ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” Expanding ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : V e r t i c a l </enum> </ p r o p e r t y > <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x I n f o G e r a i s ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >I n f o r m a ç õ e s g e r a i s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 4 ”> <i t e m> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> <p r o p e r t y name=” s i z e C o n s t r a i n t ”> <enum>QLayout : : S e t F i x e d S i z e </enum> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =” Q P r o g r e s s B a r ” name=” p r o g r e s s B a r ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >0</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >16777215 </ width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” v a l u e ”> <number>0</number> </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> 244 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 <w i d g e t c l a s s =” QLabel ” name=” l a b e l S t a t u s ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” P r e f e r r e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >0</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >16777215 </ width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >P r o n t o . </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 3 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e T y p e ”> <enum>Q S i z e P o l i c y : : F i x e d </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >20</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> <i t e m> <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t 4 ”> <p r o p e r t y name=” s i z e C o n s t r a i n t ”> <enum>QLayout : : S e t N o C o n s t r a i n t </enum> </ p r o p e r t y > <p r o p e r t y name=” h o r i z o n t a l S p a c i n g ”> <number>10</number> </ p r o p e r t y > <p r o p e r t y name=” v e r t i c a l S p a c i n g ”> <number>15</number> </ p r o p e r t y > <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l T o t a l R e g s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T o t a l de r e g i s t r o s : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l T o t a l R e g s E d i t ”> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l T o t a l A t r i b s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T o t a l de a t r i b u t o s : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l T o t a l A t r i b s E d i t ”> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > 245 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x A t r i b u t o s ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >0</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” maximumSize ”> <s i z e > <width >16777215 </ width> <h e i g h t >16777215 </ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >A t r i b u t o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n T o d o s ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Todos</ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” pushButtonRemover ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Remover</ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n I n v e r t e r ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >I n v e r t e r </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” Q L i s t W i d g e t ” name=” l i s t W i d g e t A t r i b u t o s ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” Expanding ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x T i p o s ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >T i p o s </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 3 ”> <i t e m> <w i d g e t c l a s s =” QTreeWidget ” name=” t r e e W i d g e t T i p o s ”> 246 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” Expanding ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <column> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </column> </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =”QGroupBox” name=” groupBoxOpcoes ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >0</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t i t l e ”> <s t r i n g >Opções </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QGridLayout ” name=” g r i d L a y o u t ”> <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a r r e g a r ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >C a r r e g a r </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n S a l v a r ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >S a l v a r </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n E d i c a o ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >E d i ç ã o </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n V i s u a l i z a c a o ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >V i s u a l i z a ç ã o </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > </w i d g e t > </i t e m> 247 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 <i t e m> <w i d g e t c l a s s =” Q S p l i t t e r ” name=” s p l i t t e r 2 ”> <p r o p e r t y name=” e n a b l e d ”> <b o o l >t r u e </b o o l > </ p r o p e r t y > <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : V e r t i c a l </enum> </ p r o p e r t y > <p r o p e r t y name=” c h i l d r e n C o l l a p s i b l e ”> <b o o l >f a l s e </b o o l > </ p r o p e r t y > <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x A t r i b u t o S e l e c i o n a d o ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >A t r i b u t o S e l e c i o n a d o </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 5 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 6 ”> <i t e m> <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> <p r o p e r t y name=” f i e l d G r o w t h P o l i c y ”> <enum>QFormLayout : : A l l N o n F i x e d F i e l d s G r o w </enum> </ p r o p e r t y > <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l N o m e ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Nome: </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l N o m e E d i t ”> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l D i s t i n t o s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T o t a l de v a l o r e s d i s t i n t o s : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l D i s t i n t o s E d i t ”> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 2 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l U n i c o s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T o t a l de v a l o r e s ú n i c o s : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 2 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l U n i c o s E d i t ”> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e T y p e ”> <enum>Q S i z e P o l i c y : : F i x e d </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > 248 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 </i t e m> <i t e m> <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t 2 ”> <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l T i p o ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Tipo : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l T i p o E d i t ”> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l M i s s i n g ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T o t a l de v a l o r e s m i s s i n g s : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l M i s s i n g E d i t ”> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> <w i d g e t c l a s s =” QTableWidget ” name=” t a b l e W i d g e t E s t a t i s t i c a s ”> <column> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </column> <column> <p r o p e r t y name=” t e x t ”> < s t r i n g /> </ p r o p e r t y > </column> </w i d g e t > </i t e m> </ l a y o u t > </w i d g e t > <w i d g e t c l a s s =”QGroupBox” name=” g r o u p B o x H i s t o g r a m a G r a f i c o B a r r a s ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >H i s t o g r a m a </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 3 ”> <i t e m> <w i d g e t c l a s s =” QWidget ” name=” w i d g e t H i s t o g r a m a G r a f i c o B a r r a s ” n a t i v e=” t r u e ”> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 6 ”> <p r o p e r t y name=” l e f t M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>0</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>0</number> </ p r o p e r t y > 249 499 <p r o p e r t y name=” bottomMargin ”> 500 <number>0</number> 501 </ p r o p e r t y > 502 </ l a y o u t > 503 </w i d g e t > 504 </i t e m> 505 </ l a y o u t > 506 </w i d g e t > 507 </w i d g e t > 508 </i t e m> 509 </ l a y o u t > 510 </i t e m> 511 </ l a y o u t > 512 </w i d g e t > 513 < r e s o u r c e s /> 514 <c o n n e c t i o n s /> 515 </u i > Listagem B.74: widget analise exploracao dados.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #i n c l u d e ” w i d g e t c a t e g o r i a s q u a l . h” #i n c l u d e #i n c l u d e ” p o p u l a d o r . h” ” c o l e t o r e s t a t i s t i c a s . h” #i n c l u d e <QMessageBox> #i n c l u d e <QDebug> WidgetCategoriasQual : : WidgetCategoriasQual ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , QWidget ∗ p a r e n t ) : QWidget ( p a r e n t ) { i n i c i a l i z e ( atributos ) ; } WidgetCategoriasQual : : WidgetCategoriasQual ( c o n s t s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t ) : QWidget ( p a r e n t ) { v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; i n i c i a l i z e ( atributos ) ; } WidgetCategoriasQual : : ˜ WidgetCategoriasQual ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } void { WidgetCategoriasQual : : i n i c i a l i z e ( const v e c t o r <s t r i n g > &a t r i b u t o s ) ui . setupUi ( t h i s ) ; atributos = atributos ; P o p u l a d o r : : populeComboBox ( u i . c o m b o B o x A t r i b u t o s , atributos ) ; c o n n e c t ( u i . c o m b o B o x A t r i b u t o s , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , t h i s , SLOT( c u r r e n t I n d e x C h a n g e d C o m b o B o x A t r i b u t o s ( c o n s t Q S t r i n g &) ) ) ; i f ( ! a t r i b u t o s . empty ( ) ) { c u r r e n t I n d e x C h a n g e d C o m b o B o x A t r i b u t o s ( u i . c o m b o B o x A t r i b u t o s−> currentText () ) ; } 44 45 46 47 48 49 c o n n e c t ( u i . l i s t W i d g e t V a l o r e s , SIGNAL ( itemChanged ( Q L i s t W i d g e t I t e m ∗ ) ) , t h i s , SLOT( itemChanged ( Q L i s t W i d g e t I t e m ∗ ) ) ) ; 50 51 52 } 53 54 { void WidgetCategoriasQual : : setHabilitadoComboBoxAtributos ( const habilitado ) u i . c o m b o B o x A t r i b u t o s−>s e t E n a b l e d ( h a b i l i t a d o ) ; bool 250 55 56 57 } 58 59 { void v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = s t d : : f i n d ( cbegin () , a t r i b u t o s . cend ( ) , a t r i b u t o ) ; 60 61 62 63 64 65 66 67 68 69 70 71 if { 99 100 101 102 103 104 105 106 107 108 != a t r i b u t o s . cend ( ) ) atributos . } } void WidgetCategoriasQual : : currentIndexChangedComboBoxAtributos ( c o n s t Q S t r i n g &t e x t ) { c on s t s t r i n g a t r i b u t o S e l e c i o n a d o = t e x t . to Lati n1 ( ) . data ( ) ; v e c t o r <s t r i n g > c a t e g o r i a s A t r i b u t o Q u a l i t a t i v o = v e c t o r <s t r i n g >() ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o d a s C a t e g o r i a s A t r i b u t o Q u a l ( atributoSelecionado , categoriasAtributoQualitativo ) ; Populador : : populeListWidget ( u i . l i s t W i d g e t V a l o r e s , categoriasAtributoQualitativo ) ; i f ( c a t e g o r i a s A t r i b u t o Q u a l i t a t i v o . s i z e ( ) > 0) { u i . l i s t W i d g e t V a l o r e s −>i t e m ( 0 )−>s e t C h e c k S t a t e ( Qt : : Checked ) ; } } W i d g e t C a t e g o r i a s Q u a l : : itemChanged ( Q L i s t W i d g e t I t e m ∗ i t e m ) void { u i . l i s t W i d g e t V a l o r e s −>b l o c k S i g n a l s ( t r u e ) ; const bool for { int c o u n t = u i . l i s t W i d g e t V a l o r e s −>c o u n t ( ) ; algumMarcado = f a l s e ; ( int if { i = 0; i < c o u n t && ! algumMarcado ; ++i ) ( u i . l i s t W i d g e t V a l o r e s −>i t e m ( i )−>c h e c k S t a t e ( ) == Qt : : Checked ) algumMarcado = t r u e ; } } if { ( ! algumMarcado ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Há de t e r p e l o menos um i t e m marcado ” ) ) ; i t e m−>s e t C h e c k S t a t e ( Qt : : Checked ) ; } u i . l i s t W i d g e t V a l o r e s −>b l o c k S i g n a l s ( f a l s e ) ; } W i d g e t C a t e g o r i a s Q u a l : : o b t e r S e l e c i o n a d o s ( v e c t o r <V a l o r B a s e ∗ c o n s t > & selecionados ) const void { const 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 ( citAtributo string & atributos . u i . c o m b o B o x A t r i b u t o s−>s e t C u r r e n t I n d e x ( c i t A t r i b u t o − cbegin () ) ; 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 WidgetCategoriasQual : : setAtributoAtualComboBoxAtributos ( const atributo ) s t r i n g a t r i b u t o S e l e c i o n a d o = u i . c o m b o B o x A t r i b u t o s−>c u r r e n t T e x t ( ) . toLatin1 ( ) . data ( ) ; const for { int ( int if { c o u n t = u i . l i s t W i d g e t V a l o r e s −>c o u n t ( ) ; i = 0; i < c o u n t ; ++i ) ( u i . l i s t W i d g e t V a l o r e s −>i t e m ( i )−>c h e c k S t a t e ( ) == Qt : : Checked ) V a l o r B a s e ∗ v a l o r = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> g e r a r V a l o r ( a t r i b u t o S e l e c i o n a d o , u i . l i s t W i d g e t V a l o r e s −>i t e m ( i )−>t e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ) ; s e l e c i o n a d o s . push back ( v a l o r ) ; } } } bool { WidgetCategoriasQual : : c o n s i d e r a r M i s s i n g s ( ) return } u i . c h e c k B o x C o n s M i s s i n g s−>i s C h e c k e d ( ) ; const 251 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 void visivel u i . c o m b o B o x A t r i b u t o s−>s e t V i s i b l e ( v i s i v e l ) ; u i . l a b e l A t r i b u t o −>s e t V i s i b l e ( v i s i v e l ) ; void { W i d g e t C a t e g o r i a s Q u a l : : marcarTodos ( ) const for { c o u n t = u i . l i s t W i d g e t V a l o r e s −>c o u n t ( ) ; int ( int i = 0; i < c o u n t ; ++i ) u i . l i s t W i d g e t V a l o r e s −>i t e m ( i )−>s e t C h e c k S t a t e ( Qt : : Checked ) ; } } bool W i d g e t C a t e g o r i a s Q u a l : : h a R e g i s t r o s ( s t r i n g &e r r o , r e g i s t r o s V a l i d o s ) const v e c t o r <s i z e t > & { v e c t o r <V a l o r B a s e ∗ c o n s t > s e l e c i o n a d o s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; obterSelecionados ( selecionados ) ; if { ( s e l e c i o n a d o s . empty ( ) ) e r r o = ”Nenhum v a l o r return f a l s e ; selecionado ” ; } const bool m i s s i n gs T m b = u i . c h e c k B o x C o n s M i s s i n g s−>i s C h e c k e d ( ) ; const s t r i n g &a t r i b u t o = a t r i b u t o s [ u i . c o m b o B o x A t r i b u t o s−>c u r r e n t I n d e x () ] ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( a t r i b u t o , s e l e c i o n a d o s , missingsTmb , f a l s e , r e g i s t r o s V a l i d o s ) ; 158 159 ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r selecionados . cbegin () ; c i t S e l e c i o n a d o != s e l e c i o n a d o s . c e n d ( ) ; c i t S e l e c i o n a d o ++) for 160 161 162 163 164 165 166 167 168 citSelecionado = { ∗citSelecionado ; delete } if { ( r e g i s t r o s V a l i d o s . empty ( ) ) e r r o = ”Não f o r a m e n c o n t r a d o s selecionadas ” ; false ; registros de a c o r d o com a s return } return true ; } c o n s t s t r i n g &W i d g e t C a t e g o r i a s Q u a l : : a t r i b u t o A t u a l ( ) c o n s t { return a t r i b u t o s [ u i . c o m b o B o x A t r i b u t o s−>c u r r e n t I n d e x ( ) ] ; } void { WidgetCategoriasQual : : checkConsiderarMissings ( bool checked ) u i . c h e c k B o x C o n s M i s s i n g s−>s e t C h e c k e d ( c h e c k e d ) ; } Listagem B.75: widget categorias qual.cpp 1 2 3 4 5 6 7 8 9 10 11 12 bool } 157 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 WidgetCategoriasQual : : setVisibilidadeComboAtributos ( const ) { #i f n d e f WIDGET CATEGORIAS QUAL H #d e f i n e WIDGET CATEGORIAS QUAL H #i n c l u d e ” u i w i d g e t c a t e g o r i a s q u a l . h” #i n c l u d e <s t r i n g > #i n c l u d e <v e c t o r > #i n c l u d e using ” v a l o r b a s e . h” namespace std ; categorias 252 13 14 15 16 17 18 c l a s s WidgetCategoriasQual { Q OBJECT : public QWidget public : W i d g e t C a t e g o r i a s Q u a l ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , QWidget ∗ p a r e n t = 0) ; W i d g e t C a t e g o r i a s Q u a l ( c o n s t s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t = 0 ) ; ˜ WidgetCategoriasQual ( ) ; v o i d i n i c i a l i z e ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s ) ; void setHabilitadoComboBoxAtributos ( const bool h a b i l i t a d o ) ; v o i d s e t A t r i b u t o A t u a l C o m b o B o x A t r i b u t o s ( c o n s t s t r i n g &a t r i b u t o ) ; void setVisibilidadeComboAtributos ( const bool v i s i v e l ) ; v o i d o b t e r S e l e c i o n a d o s ( v e c t o r <V a l o r B a s e ∗ c o n s t > &s e l e c i o n a d o s ) c o n s t ; bool considerarMissings () const ; v o i d marcarTodos ( ) ; void checkConsiderarMissings ( bool checked ) ; b o o l h a R e g i s t r o s ( s t r i n g &e r r o , v e c t o r <s i z e t > & r e g i s t r o s V a l i d o s ) c o n s t ; c o n s t s t r i n g &a t r i b u t o A t u a l ( ) c o n s t ; 19 20 21 22 23 24 25 26 27 28 29 30 31 32 p r i v a t e : 33 Ui : : W i d g e t C a t e g o r i a s Q u a l u i ; 34 v e c t o r <s t r i n g > atributos ; 35 36 p r i v a t e s l o t s : 37 void currentIndexChangedComboBoxAtributos ( c o n s t 38 v o i d itemChanged ( Q L i s t W i d g e t I t e m ∗ ) ; 39 } ; 40 41 #e n d i f // WIDGET CATEGORIAS QUAL H Q S t r i n g &) ; Listagem B.76: widget categorias qual.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >W i d g e t C a t e g o r i a s Q u a l </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t C a t e g o r i a s Q u a l ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >329</width> 10 <h e i g h t >234</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >W i d g e t C a t e g o r i a s Q u a l </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 17 <i t e m> 18 <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> 19 <i t e m row=” 0 ” column=” 0 ”> 20 <w i d g e t c l a s s =” QLabel ” name=” l a b e l A t r i b u t o ”> 21 <p r o p e r t y name=” t e x t ”> 22 <s t r i n g >A t r i b u t o : </ s t r i n g > 23 </ p r o p e r t y > 24 </w i d g e t > 25 </i t e m> 26 <i t e m row=” 0 ” column=” 1 ”> 27 <w i d g e t c l a s s =”QComboBox” name=” c o m b o B o x A t r i b u t o s ”/> 28 </i t e m> 29 <i t e m row=” 1 ” column=” 0 ”> 30 <w i d g e t c l a s s =” QLabel ” name=” l a b e l 3 ”> 31 <p r o p e r t y name=” t e x t ”> 32 <s t r i n g >C a t e g o r i a s : </ s t r i n g > 33 </ p r o p e r t y > 34 </w i d g e t > 35 </i t e m> 36 <i t e m row=” 1 ” column=” 1 ”> 37 <w i d g e t c l a s s =” Q L i s t W i d g e t ” name=” l i s t W i d g e t V a l o r e s ”> 38 <p r o p e r t y name=” s i z e P o l i c y ”> 39 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” Expanding ”> 40 <h o r s t r e t c h >0</ h o r s t r e t c h > 41 <v e r s t r e t c h >0</ v e r s t r e t c h > 42 </ s i z e p o l i c y > 43 </ p r o p e r t y > 44 <p r o p e r t y name=” maximumSize ”> 45 <s i z e > 46 <width >16777215 </ width> 253 47 <h e i g h t >16777215 </ h e i g h t > 48 </ s i z e > 49 </ p r o p e r t y > 50 </w i d g e t > 51 </i t e m> 52 </ l a y o u t > 53 </i t e m> 54 <i t e m> 55 <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> 56 <p r o p e r t y name=” t i t l e ”> 57 <s t r i n g >C o n s i d e r a r também: </ s t r i n g > 58 </ p r o p e r t y > 59 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> 60 <i t e m> 61 <w i d g e t c l a s s =” QCheckBox ” name=” c h e c k B o x C o n s M i s s i n g s ”> 62 <p r o p e r t y name=” t e x t ”> 63 <s t r i n g >M i s s i n g s </ s t r i n g > 64 </ p r o p e r t y > 65 </w i d g e t > 66 </i t e m> 67 <i t e m> 68 <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> 69 <p r o p e r t y name=” o r i e n t a t i o n ”> 70 <enum>Qt : : H o r i z o n t a l </enum> 71 </ p r o p e r t y > 72 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 73 <s i z e > 74 <width >40</width> 75 <h e i g h t >20</ h e i g h t > 76 </ s i z e > 77 </ p r o p e r t y > 78 </ s p a c e r > 79 </i t e m> 80 </ l a y o u t > 81 </w i d g e t > 82 </i t e m> 83 </ l a y o u t > 84 </w i d g e t > 85 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 86 < r e s o u r c e s /> 87 <c o n n e c t i o n s /> 88 </u i > Listagem B.77: widget categorias qual.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #i n c l u d e ” w i d g e t d i s t r i b u i c a o . h” #i n c l u d e <QMessageBox> #i n c l u d e <QDebug> #i n c l u d e ” u t i l i d a d e s . h” WidgetDistribuicao : : WidgetDistribuicao ( c o n s t l i s t <d o u b l e > &v a l o r e s , c o n s t D i s t r i b u i c a o &d i s t r i b u i c a o , QWidget ∗ p a r e n t ) distribuicao ( distribuicao ) , : QWidget ( p a r e n t ) , { ui . setupUi ( t h i s ) ; const const const valores ( valores ) s t r i n g nome = d i s t r i b u i c a o . nome ( ) ; v e c t o r <s t r i n g > p a r a m e t r o s N o m e s = d i s t r i b u i c a o . nomesParametros ( ) ; d i s t r i b u i c a o . parametros ( ) ; ; v e c t o r <d o u b l e > p a r a m e t r o s D b l = u i . groupBox−>s e t T i t l e ( Q S t r i n g : : f r o m L a t i n 1 ( ” P a r â m e t r o s f r o m L a t i n 1 ( nome . c s t r ( ) ) ) ; da ” ) +Q S t r i n g : : setLabelVisivelValorP () ; for { ( size t const const i = 0; i < parametrosNomes . s i z e ( ) ; i ++) s t r i n g &nomeParametro = p a r a m e t r o s N o m e s [ i ] ; double v a l o r I n i c i a l = parametrosDbl [ i ] ; W i d g e t P a r a m e t r o ∗ w i d g e t P a r a m e t r o = new W i d g e t P a r a m e t r o ( nomeParametro , v a l o r I n i c i a l , u i . w i d g e t P a r a m e t r o s ) ; u i . w i d g e t P a r a m e t r o s−>l a y o u t ( )−>addWidget ( w i d g e t P a r a m e t r o ) ; widgetsParametros . push back ( widgetParametro ) ; 254 } 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 setLabelVisivelValorP () ; connect ( ui . pushButtonGerarDistri , gerarDistribuicaoClick () ) ) ; SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( } WidgetDistribuicao : : ˜ WidgetDistribuicao () { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } c o n s t D i s t r i b u i c a o &W i d g e t D i s t r i b u i c a o : : d i s t r i b u i c a o ( ) { return distribuicao ; } void { const WidgetDistribuicao : : setLabelVisivelValorP () const bool visivel = d i s t r i b u i c a o . valorPValido () ; u i . l a b e l V a l o r P e d i t −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : d b l T o S t d S t r ( d i s t r i b u i c a o . valorP ( ) , 15 , true ) . c s t r ( ) ) ) ; u i . l a b e l V a l o r P e d i t −>s e t V i s i b l e ( v i s i v e l ) ; u i . l a b e l V a l o r P −>s e t V i s i b l e ( v i s i v e l ) ; } void { WidgetDistribuicao : : gerarDistribuicaoClick () Sucesso s u c e s s o = S u c e s s o : : OK; v e c t o r <d o u b l e > p a r a m e t r o s I n s e r i d o s = v e c t o r <d o u b l e >() ; ( v e c t o r <W i d g e t P a r a m e t r o ∗ > : : c o n s t i t e r a t o r c i t P a r a m e t r o W i d g e t = widgetsParametros . cbegin () ; c i t P a r a m e t r o W i d g e t != w i d g e t s P a r a m e t r o s . cend ( ) ; c i t P a r a m e t r o W i d g e t++) for { p a r a m e t r o s I n s e r i d o s . p u s h b a c k ( ( ∗ c i t P a r a m e t r o W i d g e t )−>v a l o r P a r a m e t r o () ) ; } D i s t r i b u i c a o &a n t i g a = distribuicao ; try { d i s t r i b u i c a o = Distribuicao ( parametrosInseridos , distribuicao . tipo () ) ; } c a t c h ( f i t : : f r e q t a b l e e x c e p t i o n &e ) { s u c e s s o = S u c e s s o : : ERRO QUI QUADRADO ; } c a t c h ( f i t : : v a l u e e x c e p t i o n &e ) { s u c e s s o = S u c e s s o : : ERRO QUI QUADRADO ; } c a t c h ( f i t : : d i s t r i b u t i o n e x c e p t i o n &e ) { s u c e s s o = S u c e s s o : : ERRO PARAMETRO; } catch ( . . . ) { s u c e s s o = S u c e s s o : : ERRO INDEFINIDO ; } bool if { valores , resetarPatametros = f a l s e ; ( sucesso != S u c e s s o : : OK) switch ( sucesso ) { c a s e S u c e s s o : : ERRO QUI QUADRADO : { QMessageBox m s g Q u e s t i o n ( QMessageBox : : Q u e s t i o n , ” A v i s o ” , Q S t r i n g : : f r o m L a t i n 1 ( ”Não f o i p o s sı́ v e l c a l c u l a r o t e s t e Qui−Quadrado com a d i s t r i b u i ç ã o g e r a d a com o s p a r â m e t r o s e s c o l h i d o s ! \ n D e s e j a c o n t i n u a r com e s t á d i s t r i b u i ç ã o mesmo a s s i m ? ” ) , QMessageBox : : Yes | 255 QMessageBox : : No , t h i s ) ; m s g Q u e s t i o n . b u t t o n ( QMessageBox : : Yes )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Sim ” ) ) ; m s g Q u e s t i o n . b u t t o n ( QMessageBox : : No )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ”Não” ) ) ; 106 107 108 109 110 111 if { d i s t r i b u i c a o = Distribuicao ( parametrosInseridos , d o u b l e >() , distribuicao . tipo () ) ; list < } else { 112 113 114 115 116 117 118 119 120 121 resetarPatametros = true ; } break ; } case S u c e s s o : : ERRO PARAMETRO: { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Não f o i p o s sı́ v e l g e r a r a d i s t r i b u i ç ã o com o s p a r â m e t r o s e s c o l h i d o s ! ” ) ) ; resetarPatametros = true ; break ; 122 123 124 125 126 127 } case S u c e s s o : : ERRO INDEFINIDO : { QMessageBox : : c r i t i c a l (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” E r r o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” O c o r r e u um e r r o i n d e f i n i d o ! ” ) ) ; resetarPatametros = true ; break ; 128 129 130 131 132 133 134 135 136 137 } } } if { ( resetarPatametros ) parametrosInseridos = d i s t r i b u i c a o . parametros ( ) ; v e c t o r <d o u b l e > : : c o n s t i t e r a t o r c i t P a r a m e t r o = p a r a m e t r o s I n s e r i d o s . cbegin () ; 138 139 140 141 142 143 144 145 146 147 148 ( m s g Q u e s t i o n . e x e c ( ) == QMessageBox : : Yes ) for ( v e c t o r <W i d g e t P a r a m e t r o ∗ > : : c o n s t i t e r a t o r c i t P a r a m e t r o W i d g e t = widgetsParametros . cbegin () ; c i t P a r a m e t r o W i d g e t != w i d g e t s P a r a m e t r o s . cend ( ) ; c i t P a r a m e t r o W i d g e t ++, c i t P a r a m e t r o ++) { ( ∗ c i t P a r a m e t r o W i d g e t )−>s e t V a l o r P a r a m e t r o ( ∗ c i t P a r a m e t r o ) ; } } setLabelVisivelValorP () ; } Listagem B.78: widget distribuicao.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #i f n d e f WIDGET DISTRIBUICAO H #d e f i n e WIDGET DISTRIBUICAO H #i n c l u d e ” u i w i d g e t d i s t r i b u i c a o . h” #i n c l u d e ” w i d g e t p a r a m e t r o . h” #i n c l u d e < l i s t > #i n c l u d e using ” d i s t r i b u i c a o c o n t r o l e . h” namespace std ; c l a s s WidgetDistribuicao { Q OBJECT public : enum S u c e s s o : public QWidget {OK, ERRO QUI QUADRADO, ERRO PARAMETRO, WidgetDistribuicao ( c o n s t l i s t <d o u b l e > &v a l o r e s , c o n s t D i s t r i b u i c a o &d i s t r i b u i c a o , QWidget ∗ p a r e n t = 0 ) ; ERRO INDEFINIDO } ; 256 25 ˜ WidgetDistribuicao () ; 26 27 c o n s t D i s t r i b u i c a o &d i s t r i b u i c a o ( ) c o n s t ; 28 29 p r i v a t e s l o t s : 30 void g e r a r D i s t r i b u i c a o C l i c k () ; 31 32 p r i v a t e : 33 34 Ui : : W i d g e t D i s t r i b u i c a o u i ; 35 v e c t o r <W i d g e t P a r a m e t r o∗> widgetsParametros ; 36 Distribuicao distribuicao ; 37 c o n s t l i s t <d o u b l e > & v a l o r e s ; 38 39 void setLabelVisivelValorP () ; 40 } ; 41 42 #e n d i f // WIDGET DISTRIBUICAO H Listagem B.79: widget distribuicao.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >W i d g e t D i s t r i b u i c a o </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t D i s t r i b u i c a o ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >379</width> 10 <h e i g h t >233</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >W i d g e t D i s t r i b u i c a o </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> 17 <i t e m> 18 <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> 19 <p r o p e r t y name=” t i t l e ”> 20 <s t r i n g >P a r â m e t r o s da . . . < / s t r i n g > 21 </ p r o p e r t y > 22 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 23 <i t e m> 24 <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> 25 <i t e m row=” 0 ” column=” 0 ”> 26 <w i d g e t c l a s s =” QLabel ” name=” l a b e l V a l o r P ”> 27 <p r o p e r t y name=” t e x t ”> 28 <s t r i n g >V a l o r−p</ s t r i n g > 29 </ p r o p e r t y > 30 </w i d g e t > 31 </i t e m> 32 <i t e m row=” 0 ” column=” 1 ”> 33 <w i d g e t c l a s s =” QLabel ” name=” l a b e l V a l o r P e d i t ”> 34 <p r o p e r t y name=” t e x t ”> 35 <s t r i n g >T e x t L a b e l </ s t r i n g > 36 </ p r o p e r t y > 37 </w i d g e t > 38 </i t e m> 39 </ l a y o u t > 40 </i t e m> 41 <i t e m> 42 <w i d g e t c l a s s =” QWidget ” name=” w i d g e t P a r a m e t r o s ” n a t i v e=” t r u e ”> 43 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 3 ”> 44 <p r o p e r t y name=” l e f t M a r g i n ”> 45 <number>0</number> 46 </ p r o p e r t y > 47 <p r o p e r t y name=” t o p M a r g i n ”> 48 <number>0</number> 49 </ p r o p e r t y > 50 <p r o p e r t y name=” r i g h t M a r g i n ”> 51 <number>0</number> 52 </ p r o p e r t y > 53 <p r o p e r t y name=” bottomMargin ”> 54 <number>0</number> 55 </ p r o p e r t y > 56 </ l a y o u t > 57 </w i d g e t > 58 </i t e m> 257 59 <i t e m> 60 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 61 <i t e m> 62 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 63 <p r o p e r t y name=” o r i e n t a t i o n ”> 64 <enum>Qt : : H o r i z o n t a l </enum> 65 </ p r o p e r t y > 66 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 67 <s i z e > 68 <width >40</width> 69 <h e i g h t >20</ h e i g h t > 70 </ s i z e > 71 </ p r o p e r t y > 72 </ s p a c e r > 73 </i t e m> 74 <i t e m> 75 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n G e r a r D i s t r i ”> 76 <p r o p e r t y name=” t e x t ”> 77 <s t r i n g >G e r a r d i s t r i b u i ç ã o com o p a r a m e t r o s d e f i n i d o s </ s t r i n g > 78 </ p r o p e r t y > 79 </w i d g e t > 80 </i t e m> 81 </ l a y o u t > 82 </i t e m> 83 <i t e m> 84 <s p a c e r name=” v e r t i c a l S p a c e r ”> 85 <p r o p e r t y name=” o r i e n t a t i o n ”> 86 <enum>Qt : : V e r t i c a l </enum> 87 </ p r o p e r t y > 88 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 89 <s i z e > 90 <width >20</width> 91 <h e i g h t >40</ h e i g h t > 92 </ s i z e > 93 </ p r o p e r t y > 94 </ s p a c e r > 95 </i t e m> 96 </ l a y o u t > 97 </w i d g e t > 98 </i t e m> 99 </ l a y o u t > 100 </w i d g e t > 101 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 102 < r e s o u r c e s /> 103 <c o n n e c t i o n s /> 104 </u i > Listagem B.80: widget distribuicao.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #i n c l u d e ” w i d g e t e s c o l h e r d p . h” #i n c l u d e #i n c l u d e #i n c l u d e ” g e r a d o r d i s t r i b u i c o e s . h” ” t a b e l a r e g i s t r o s . h” ” p o p u l a d o r . h” #i n c l u d e <QMessageBox> #i n c l u d e <QDebug> WidgetEscolherDP : : WidgetEscolherDP ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , c o n s t W i d g e t E s c o l h e r D P : : Opcao opcao , QWidget ∗ p a r e n t ) : QWidget ( p a r e n t ) { i n i c i a l i z e ( a t r i b u t o s , i n d i c e s V a l i d o s P o r A t r i b u t o , opcao ) ; if { ( parent ) c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , reject () ) ) ; } } WidgetEscolherDP : : WidgetEscolherDP ( c o n s t s t r i n g &a t r i b u t o , c o n s t v e c t o r <s i z e t > &i n d i c e s V a l i d o s , c o n s t W i d g e t E s c o l h e r D P : : Opcao opcao , QWidget ∗ p a r e n t ) p a r e n t , SLOT( 258 30 31 32 33 34 35 : v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; v e c t o r <v e c t o r <s i z e t >> i n d i c e s V a l i d o s P o r A t r i b u t o = v e c t o r <v e c t o r <s i z e t >>() ; i n d i c e s V a l i d o s P o r A t r i b u t o . push back ( i n d i c e s V a l i d o s ) ; 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 i n i c i a l i z e ( atributos , if { indicesValidosPorAtributo , opcao ) ; ( parent ) c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , reject () ) ) ; p a r e n t , SLOT( } } WidgetEscolherDP : : ˜ WidgetEscolherDP ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } void W i d g e t E s c o l h e r D P : : i n i c i a l i z e ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , c o n s t W i d g e t E s c o l h e r D P : : Opcao o p c a o ) const { ui . setupUi ( t h i s ) ; atributos = atributos ; u i . p u s h B u t t o n G e r a r−>s e t V i s i b l e ( o p c a o == ESCOLHER) ; u i . p u s h B u t t o n C a n c e l a r−>s e t V i s i b l e ( o p c a o == ESCOLHER) ; i f ( o p c a o != ESCOLHER) { u i . h o r i z o n t a l S p a c e r −>c h a n g e S i z e ( 0 , 0 , Q S i z e P o l i c y : : F i x e d , QSizePolicy : : Fixed ) ; } 63 64 65 v e c t o r <v e c t o r <d o u b l e >> v a l o r e s D b l P o r A t r i b u t o = v e c t o r <v e c t o r <d o u b l e >>() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> valoresAtributosQuantDblPorIndicePorAtributo ( atributos , indicesValidosPorAtributo , valoresDblPorAtributo ) ; 66 67 68 69 v a l o r e s L i s t P o r A t r i b u t o = v e c t o r <l i s t <d o u b l e >>() ; f o r ( v e c t o r <v e c t o r <d o u b l e >>:: c o n s t i t e r a t o r c i t C o l u n a V e c = valoresDblPorAtributo . cbegin () ; c i t C o l u n a V e c != v a l o r e s D b l P o r A t r i b u t o . c e n d ( ) ; c i t C o l u n a V e c ++) { v a l o r e s L i s t P o r A t r i b u t o . p u s h b a c k ( l i s t <d o u b l e >( c i t C o l u n a V e c−>c b e g i n ( ) , c i t C o l u n a V e c−>c e n d ( ) ) ) ; l i s t <d o u b l e > &c o l u n a L i s t = v a l o r e s L i s t P o r A t r i b u t o . back ( ) ; colunaList . sort () ; } 70 71 72 73 74 75 76 77 78 79 80 81 82 83 setupTabs ( ) ; u i . s t a c k e d W i d g e t−>s e t C u r r e n t I n d e x ( 0 ) ; atributos ) ; P o p u l a d o r : : populeComboBox ( u i . comboBoxAtributo , u i . comboBoxAtributo−>s e t C u r r e n t I n d e x ( 0 ) ; c o n n e c t ( u i . comboBoxAtributo , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( i n t ) ) , s t a c k e d W i d g e t , SLOT( s e t C u r r e n t I n d e x ( i n t ) ) ) ; 84 85 86 87 88 89 if { ( ui . a t r i b u t o s . s i z e ( ) == 1 ) u i . comboBoxAtributo−>s e t E n a b l e d ( f a l s e ) ; // u i . l a b e l A t r i b u t o −>s e t V i s i b l e ( f a l s e ) ; // u i . h o r i z o n t a l S p a c e r 2 −>c h a n g e S i z e ( 0 , 0 , QSizePolicy : : Fixed ) ; Q S i z e P o l i c y : : Fixed , } 90 91 92 c o n n e c t ( u i . p u s h B u t t o n G e r a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( g e r a r C l i c k ( ) ) ); c o n n e c t ( u i . p u s h B u t t o n C a n c e l a r , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( r e j e c t ( ) ) ) ; 93 94 95 96 97 QWidget ( p a r e n t ) { } const { D i s t r i b u i c a o &W i d g e t E s c o l h e r D P : : d i s t r i b u i c a o A t u a l ( ) const 259 QTabWidget ∗ a t r i b u t o T a b s = d y n a m i c c a s t <QTabWidget∗>( u i . s t a c k e d W i d g e t−> currentWidget ( ) ) ; WidgetDistribuicao ∗ widgetDistribuicaoAtual = dynamic cast< W i d g e t D i s t r i b u i c a o ∗>( a t r i b u t o T a b s −>c u r r e n t W i d g e t ( ) ) ; 98 99 100 101 102 103 104 105 106 return void { WidgetEscolherDP : : setupTabs ( ) v e c t o r <l i s t <d o u b l e >>:: c o n s t i t e r a t o r c i t C o l u n a = valoresListPorAtributo . cbegin () ; 107 108 109 110 111 112 113 114 115 116 117 118 for ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = c i t A t r i b u t o != a t r i b u t o s . cend ( ) ; c i t A t r i b u t o ++, c i t C o l u n a ++) QTabWidget ∗ t a b s = new QTabWidget ( t h i s ) ; u i . s t a c k e d W i d g e t−>addWidget ( t a b s ) ; const const s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; l i s t <d o u b l e > &v a l o r e s = ∗ c i t C o l u n a ; v e c t o r <c o n s t D i s t r i b u i c a o > d i s t r i b u i c o e s O k = v e c t o r <c o n s t D i s t r i b u i c a o >() ; v e c t o r <c o n s t D i s t r i b u i c a o > d i s t r i b u i c o e s N a o O k = v e c t o r <c o n s t D i s t r i b u i c a o >() ; GeradorDistribuicoes : : gerarTodasDistribuicoes ( valores , distribuicoesOk , distribuicoesNaoOk ) ; 120 121 122 123 s i z e t iTab = 0 ; f o r ( v e c t o r <c o n s t D i s t r i b u i c a o > : : c o n s t r e v e r s e i t e r a t o r citDistribuicao = distribuicoesOk . crbegin () ; c i t D i s t r i b u i c a o != d i s t r i b u i c o e s O k . r e n d ( ) ; c i t D i s t r i b u i c a o ++, iTab++) { W i d g e t D i s t r i b u i c a o ∗ w i d g e t D i s t r i b u i c a o = new W i d g e t D i s t r i b u i c a o ( valores , ∗ citDistribuicao , this ) ; w i d g e t s D i s t r i b u i c o e s . push back ( w i d g e t D i s t r i b u i c a o ) ; 124 125 126 127 128 129 130 t a b s−>i n s e r t T a b ( iTab , w i d g e t D i s t r i b u i c a o , c i t D i s t r i b u i c a o −>nome ( ) . c s t r ( ) ) ) ; QString : : fromLatin1 ( } 131 132 133 s t r i n g msg = ” A t r i b u t o : ” +a t r i b u t o +” \n\nNão f o i p o s sı́ v e l c o n s t r u i r a p a r t i r d o s d a d o s a s s e g u i n t e s d i s t r i b u i ç õ e s de p r o b a b i l i d a d e : \ n” ; f o r ( v e c t o r <c o n s t D i s t r i b u i c a o > : : c o n s t i t e r a t o r citDistribuicaoNaoOk = distribuicoesNaoOk . cbegin () ; c i t D i s t r i b u i c a o N a o O k != d i s t r i b u i c o e s N a o O k . c e n d ( ) ; c i t D i s t r i b u i c a o N a o O k ++) { W i d g e t D i s t r i b u i c a o ∗ w i d g e t D i s t r i b u i c a o = new W i d g e t D i s t r i b u i c a o ( valores , ∗citDistribuicaoNaoOk , t h i s ) ; 134 135 136 137 138 139 140 141 142 143 144 msg += ” \ t− ” +w i d g e t D i s t r i b u i c a o −>d i s t r i b u i c a o ( ) . nome ( ) +” \n ” ; w i d g e t s D i s t r i b u i c o e s . push back ( w i d g e t D i s t r i b u i c a o ) ; t a b s−>i n s e r t T a b ( iTab , w i d g e t D i s t r i b u i c a o , Q S t r i n g : : f r o m L a t i n 1 ( c i t D i s t r i b u i c a o N a o O k −>nome ( ) . c s t r ( ) ) ) ; } msg += ” \nMesmo a s s i m p a r â m e t r o s ! ” ; 145 146 147 148 149 150 158 159 160 161 a t r i b u t o s . cbegin () ; { 119 151 152 153 154 155 156 157 w i d g e t D i s t r i b u i c a o A t u a l −>d i s t r i b u i c a o ( ) ; } if { v o cê pode u t i l i z á −l a s definindo seus ( ! d i s t r i b u i c o e s N a o O k . empty ( ) ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( msg . c s t r ( ) ) ) ; } } } void { WidgetEscolherDP : : g e r a r C l i c k ( ) v e c t o r <c o n s t ; for { ( size t D i s t r i b u i c a o > d i s t r i b u i c o e s = v e c t o r <c o n s t i = 0; i < u i . s t a c k e d W i d g e t−>c o u n t ( ) ; D i s t r i b u i c a o >() i ++) QTabWidget ∗ a t r i b u t o T a b s = d y n a m i c c a s t <QTabWidget∗>( u i . s t a c k e d W i d g e t−>w i d g e t ( i ) ) ; 260 WidgetDistribuicao ∗ distriWidgetAtual = dynamic cast< W i d g e t D i s t r i b u i c a o ∗>( a t r i b u t o T a b s −>c u r r e n t W i d g e t ( ) ) ; 162 163 164 165 166 167 168 169 D i s t r i b u i c a o & d i s t r i b u i c a o = d i s t r i W i d g e t A t u a l −>d i s t r i b u i c a o () ; d i s t r i b u i c o e s . push back ( d i s t r i b u i c a o ) ; const } emit distribuicoesEscolhidas ( atributos , distribuicoes ) ; } Listagem B.81: widget escolher dp.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #i f n d e f WIDGET ESCOLHER DP H #d e f i n e WIDGET ESCOLHER DP H #i n c l u d e <QWidget> #i n c l u d e ” u i w i d g e t e s c o l h e r d p . h ” #i n c l u d e ” w i d g e t d i s t r i b u i c a o . h” #i n c l u d e <v e c t o r > #i n c l u d e < u t i l i t y > using namespace std ; c l a s s WidgetEscolherDP { Q OBJECT : public QWidget public : enum Opcao {NADA, ESCOLHER} ; WidgetEscolherDP ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , c o n s t W i d g e t E s c o l h e r D P : : Opcao opcao , QWidget ∗ p a r e n t = 0 ) ; WidgetEscolherDP ( c o n s t s t r i n g &a t r i b u t o , c o n s t v e c t o r <s i z e t > &i n d i c e s V a l i d o s , c o n s t W i d g e t E s c o l h e r D P : : Opcao opcao , QWidget ∗ p a r e n t = 0 ) ; ˜ WidgetEscolherDP ( ) ; const D i s t r i b u i c a o &d i s t r i b u i c a o A t u a l ( ) private : Ui : : W i d g e t E s c o l h e r D P const ; ui ; widgetsDistribuicoes ; v e c t o r <W i d g e t D i s t r i b u i c a o ∗> v e c t o r <s t r i n g > atributos ; v e c t o r <v e c t o r <s i z e t >> indicesValidosPorAtributo ; v e c t o r <l i s t <d o u b l e >> valoresListPorAtributo ; void void inicialize ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , c o n s t W i d g e t E s c o l h e r D P : : Opcao o p c a o ) ; setupTabs ( ) ; signals : void d i s t r i b u i c o e s E s c o l h i d a s ( const D i s t r i b u i c a o >&) ; 53 54 p r i v a t e s l o t s : 55 void gerarClick () ; 56 } ; 57 58 #e n d i f // WIDGET ESCOLHER DP H v e c t o r <s t r i n g >&, c o n s t Listagem B.82: widget escolher dp.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> v e c t o r <c o n s t 261 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >W i d g e t E s c o l h e r D P </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t E s c o l h e r D P ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >595</width> 10 <h e i g h t >399</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >W i d g e t E s c o l h e r D P </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 17 <p r o p e r t y name=” l e f t M a r g i n ”> 18 <number>0</number> 19 </ p r o p e r t y > 20 <p r o p e r t y name=” t o p M a r g i n ”> 21 <number>0</number> 22 </ p r o p e r t y > 23 <p r o p e r t y name=” r i g h t M a r g i n ”> 24 <number>0</number> 25 </ p r o p e r t y > 26 <p r o p e r t y name=” bottomMargin ”> 27 <number>0</number> 28 </ p r o p e r t y > 29 <i t e m> 30 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> 31 <i t e m> 32 <w i d g e t c l a s s =” QLabel ” name=” l a b e l A t r i b u t o ”> 33 <p r o p e r t y name=” t e x t ”> 34 <s t r i n g >A t r i b u t o </ s t r i n g > 35 </ p r o p e r t y > 36 </w i d g e t > 37 </i t e m> 38 <i t e m> 39 <w i d g e t c l a s s =”QComboBox” name=” c o m b o B o x A t r i b u t o ”/> 40 </i t e m> 41 <i t e m> 42 <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> 43 <p r o p e r t y name=” o r i e n t a t i o n ”> 44 <enum>Qt : : H o r i z o n t a l </enum> 45 </ p r o p e r t y > 46 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 47 <s i z e > 48 <width >40</width> 49 <h e i g h t >20</ h e i g h t > 50 </ s i z e > 51 </ p r o p e r t y > 52 </ s p a c e r > 53 </i t e m> 54 </ l a y o u t > 55 </i t e m> 56 <i t e m> 57 <w i d g e t c l a s s =” QLabel ” name=” l a b e l A v i s o ”> 58 <p r o p e r t y name=” t e x t ”> 59 <s t r i n g >Por f a v o r , p a r a c a d a a t r i b u t o s e l e c i o n e a aba d i s t r i b u i ç ã o d e s e j a d a . </ s t r i n g > 60 </ p r o p e r t y > 61 </w i d g e t > 62 </i t e m> 63 <i t e m> 64 <w i d g e t c l a s s =” QStackedWidget ” name=” s t a c k e d W i d g e t ”/> 65 </i t e m> 66 <i t e m> 67 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 68 <i t e m> 69 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 70 <p r o p e r t y name=” o r i e n t a t i o n ”> 71 <enum>Qt : : H o r i z o n t a l </enum> 72 </ p r o p e r t y > 73 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 74 <s i z e > 75 <width >40</width> 76 <h e i g h t >20</ h e i g h t > 77 </ s i z e > 78 </ p r o p e r t y > 79 </ s p a c e r > 80 </i t e m> 81 <i t e m> 82 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n G e r a r ”> correspondete a 262 83 <p r o p e r t y name=” t e x t ”> 84 <s t r i n g >Gerar </ s t r i n g > 85 </ p r o p e r t y > 86 </w i d g e t > 87 </i t e m> 88 <i t e m> 89 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n C a n c e l a r ”> 90 <p r o p e r t y name=” t e x t ”> 91 <s t r i n g >C a n c e l a r </ s t r i n g > 92 </ p r o p e r t y > 93 </w i d g e t > 94 </i t e m> 95 </ l a y o u t > 96 </i t e m> 97 </ l a y o u t > 98 </w i d g e t > 99 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 100 < r e s o u r c e s /> 101 <c o n n e c t i o n s /> 102 </u i > Listagem B.83: widget escolher dp.ui 1 #i n c l u d e ” w i d g e t i n t e r v a l o q u a n t . h ” 2 3 #i n c l u d e <QDebug> 4 5 WidgetIntervaloQuant : : WidgetIntervaloQuant ( 6 c o n s t d o u b l e max , 7 c o n s t d o u b l e min , 8 QWidget ∗ p a r e n t ) 9 : QWidget ( p a r e n t ) 10 { 11 ui . setupUi ( t h i s ) ; 12 13 c o n n e c t ( u i . pushButtonRemover , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( removerClick () ) ) ; 14 c o n n e c t ( u i . comboBoxOpInf , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , t h i s , SLOT( c u r r e n t I n d e x C h a n g e d c o m b o B o x O p I n f ( c o n s t Q S t r i n g &) ) ) ; 15 16 u i . comboBoxOpInf−>addItem ( ”<=” ) ; 17 u i . comboBoxOpInf−>addItem ( ”<” ) ; 18 u i . comboBoxOpInf−>addItem ( ”=” ) ; 19 20 u i . comboBoxOpSup−>addItem ( ”<=” ) ; 21 u i . comboBoxOpSup−>addItem ( ”<” ) ; 22 23 u i . d o u b l e S p i n B o x S u p−>setMaximum ( max ) ; 24 u i . d o u b l e S p i n B o x S u p−>s e t V a l u e ( max ) ; 25 u i . d o u b l e S p i n B o x I n f −>setMinimum ( min ) ; 26 u i . d o u b l e S p i n B o x I n f −>s e t V a l u e ( min ) ; 27 } 28 29 W i d g e t I n t e r v a l o Q u a n t : : ˜ W i d g e t I n t e r v a l o Q u a n t ( ) 30 { 31 c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; 32 qDebug ( ) << 33 } 34 35 36 T a b e l a D e R e g i s t r o s : : I n t e r v a l o W i d g e t I n t e r v a l o Q u a n t : : g e r a r I n t e r v a l o ( ) c o n s t 37 { 38 O p e r a c a o op ; 39 40 d o u b l e i n f e r i o r = u i . d o u b l e S p i n B o x I n f −>v a l u e ( ) ; 41 d o u b l e s u p e r i o r = u i . d o u b l e S p i n B o x S u p−>v a l u e ( ) ; 42 43 i f ( u i . comboBoxOpInf−>c u r r e n t T e x t ( ) == ”<” && u i . comboBoxOpSup−> c u r r e n t T e x t ( ) == ”<” ) 44 { 45 op = MAIORQUE MENORQUE; 46 } 47 e l s e i f ( u i . comboBoxOpInf−>c u r r e n t T e x t ( ) == ”<” && u i . comboBoxOpSup−> c u r r e n t T e x t ( ) == ”<=” ) 48 { 49 op = MAIORQUE MENORIGUALQUE ; 50 } 51 e l s e i f ( u i . comboBoxOpInf−>c u r r e n t T e x t ( ) == ”<=” && u i . comboBoxOpSup−> c u r r e n t T e x t ( ) == ”<” ) 263 { 52 53 54 55 op = MAIORIGUALQUE MENORQUE ; } else 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 i f ( u i . comboBoxOpInf−>c u r r e n t T e x t ( ) == ”<=” && u i . comboBoxOpSup−> c u r r e n t T e x t ( ) == ”<=” ) { 56 57 58 59 60 61 62 63 64 65 66 67 op = MAIORIGUALQUE MENORIGUALQUE ; } else { if ( u i . comboBoxOpInf−>c u r r e n t T e x t ( ) == ”=” ) op = MAIORIGUALQUE MENORIGUALQUE ; superior = inferior ; } if { ( superior < inferior ) throw e x c e p t i o n ( ”Um d o s inferior ! ”) ; intervalos tem valor superior menor que o } return TabelaDeRegistros : : I n t e r v a l o ( i n f e r i o r , superior , op ) ; } void { WidgetIntervaloQuant : : removerClick ( ) emit removerIntervaloWidget ( t h i s ) ; } void WidgetIntervaloQuant : : currentIndexChangedcomboBoxOpInf ( c o n s t currentText ) QString & { bool i g u a l = c u r r e n t T e x t == ”=” ; u i . comboBoxOpSup−>s e t E n a b l e d ( ! i g u a l ) ; u i . d o u b l e S p i n B o x S u p−>s e t E n a b l e d ( ! i g u a l ) ; } Listagem B.84: widget intervalo quant.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #i f n d e f WIDGET INTERVALO QUANT H #d e f i n e WIDGET INTERVALO QUANT H #i n c l u d e ” u i w i d g e t i n t e r v a l o q u a n t . h” #i n c l u d e ” t a b e l a r e g i s t r o s . h” using namespace std ; c l a s s WidgetIntervaloQuant { Q OBJECT : public public : WidgetIntervaloQuant ( c o n s t d o u b l e max , c o n s t d o u b l e min , QWidget ∗ p a r e n t = 0 ) ; ˜ WidgetIntervaloQuant ( ) ; TabelaDeRegistros : : I n t e r v a l o private : Ui : : W i d g e t I n t e r v a l o Q u a n t indice ; size t QWidget gerarIntervalo () ui ; private slots : void removerClick () ; void currentIndexChangedcomboBoxOpInf ( c o n s t signals : void }; #e n d i f // const ; Q S t r i n g &c u r r e n t T e x t ) ; removerIntervaloWidget ( WidgetIntervaloQuant ∗) ; T IntervaloQuantWidget H Listagem B.85: widget intervalo quant.h 264 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >W i d g e t I n t e r v a l o Q u a n t </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t I n t e r v a l o Q u a n t ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >606</width> 10 <h e i g h t >23</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >I n t e r v a l o Q u a n t </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 17 <p r o p e r t y name=” s p a c i n g ”> 18 <number>3</number> 19 </ p r o p e r t y > 20 <p r o p e r t y name=” l e f t M a r g i n ”> 21 <number>0</number> 22 </ p r o p e r t y > 23 <p r o p e r t y name=” t o p M a r g i n ”> 24 <number>0</number> 25 </ p r o p e r t y > 26 <p r o p e r t y name=” r i g h t M a r g i n ”> 27 <number>0</number> 28 </ p r o p e r t y > 29 <p r o p e r t y name=” bottomMargin ”> 30 <number>0</number> 31 </ p r o p e r t y > 32 <i t e m> 33 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 34 <p r o p e r t y name=” o r i e n t a t i o n ”> 35 <enum>Qt : : H o r i z o n t a l </enum> 36 </ p r o p e r t y > 37 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 38 <s i z e > 39 <width >181</width> 40 <h e i g h t >20</ h e i g h t > 41 </ s i z e > 42 </ p r o p e r t y > 43 </ s p a c e r > 44 </i t e m> 45 <i t e m> 46 <w i d g e t c l a s s =” QDoubleSpinBox ” name=” d o u b l e S p i n B o x I n f ”> 47 <p r o p e r t y name=” s i z e P o l i c y ”> 48 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> 49 <h o r s t r e t c h >0</ h o r s t r e t c h > 50 <v e r s t r e t c h >0</ v e r s t r e t c h > 51 </ s i z e p o l i c y > 52 </ p r o p e r t y > 53 <p r o p e r t y name=” minimumSize ”> 54 <s i z e > 55 <width >100</width> 56 <h e i g h t >0</ h e i g h t > 57 </ s i z e > 58 </ p r o p e r t y > 59 <p r o p e r t y name=” a l i g n m e n t ”> 60 <s e t >Qt : : A l i g n R i g h t | Qt : : A l i g n T r a i l i n g | Qt : : A l i g n V C e n t e r </ s e t > 61 </ p r o p e r t y > 62 <p r o p e r t y name=” d e c i m a l s ”> 63 <number>3</number> 64 </ p r o p e r t y > 65 <p r o p e r t y name=”minimum”> 66 <d o u b l e > −999999999.000000000000000 </ d o u b l e > 67 </ p r o p e r t y > 68 <p r o p e r t y name=”maximum”> 69 <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > 70 </ p r o p e r t y > 71 </w i d g e t > 72 </i t e m> 73 <i t e m> 74 <w i d g e t c l a s s =”QComboBox” name=” comboBoxOpInf ”> 75 <p r o p e r t y name=” s i z e P o l i c y ”> 76 < s i z e p o l i c y h s i z e t y p e=”Minimum” v s i z e t y p e=” F i x e d ”> 77 <h o r s t r e t c h >0</ h o r s t r e t c h > 78 <v e r s t r e t c h >0</ v e r s t r e t c h > 79 </ s i z e p o l i c y > 80 </ p r o p e r t y > 81 </w i d g e t > 265 82 </i t e m> 83 <i t e m> 84 <w i d g e t c l a s s =” QLabel ” name=” l a b e l V a l o r ”> 85 <p r o p e r t y name=” t e x t ”> 86 <s t r i n g >V a l o r </ s t r i n g > 87 </ p r o p e r t y > 88 <p r o p e r t y name=” a l i g n m e n t ”> 89 <s e t >Qt : : A l i g n C e n t e r </ s e t > 90 </ p r o p e r t y > 91 </w i d g e t > 92 </i t e m> 93 <i t e m> 94 <w i d g e t c l a s s =”QComboBox” name=” comboBoxOpSup”> 95 <p r o p e r t y name=” s i z e P o l i c y ”> 96 < s i z e p o l i c y h s i z e t y p e=”Minimum” v s i z e t y p e=” F i x e d ”> 97 <h o r s t r e t c h >0</ h o r s t r e t c h > 98 <v e r s t r e t c h >0</ v e r s t r e t c h > 99 </ s i z e p o l i c y > 100 </ p r o p e r t y > 101 </w i d g e t > 102 </i t e m> 103 <i t e m> 104 <w i d g e t c l a s s =” QDoubleSpinBox ” name=” d o u b l e S p i n B o x S u p ”> 105 <p r o p e r t y name=” s i z e P o l i c y ”> 106 < s i z e p o l i c y h s i z e t y p e=” P r e f e r r e d ” v s i z e t y p e=” F i x e d ”> 107 <h o r s t r e t c h >0</ h o r s t r e t c h > 108 <v e r s t r e t c h >0</ v e r s t r e t c h > 109 </ s i z e p o l i c y > 110 </ p r o p e r t y > 111 <p r o p e r t y name=” minimumSize ”> 112 <s i z e > 113 <width >100</width> 114 <h e i g h t >0</ h e i g h t > 115 </ s i z e > 116 </ p r o p e r t y > 117 <p r o p e r t y name=” d e c i m a l s ”> 118 <number>3</number> 119 </ p r o p e r t y > 120 <p r o p e r t y name=”minimum”> 121 <d o u b l e > −999999999.000000000000000 </ d o u b l e > 122 </ p r o p e r t y > 123 <p r o p e r t y name=”maximum”> 124 <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > 125 </ p r o p e r t y > 126 </w i d g e t > 127 </i t e m> 128 <i t e m> 129 <w i d g e t c l a s s =” QPushButton ” name=” pushButtonRemover ”> 130 <p r o p e r t y name=” t e x t ”> 131 <s t r i n g >−</s t r i n g > 132 </ p r o p e r t y > 133 </w i d g e t > 134 </i t e m> 135 </ l a y o u t > 136 </w i d g e t > 137 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 138 < r e s o u r c e s /> 139 <c o n n e c t i o n s /> 140 </u i > Listagem B.86: widget intervalo quant.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #i n c l u d e ” w i d g e t i n t e r v a l o s q u a n t . h” #i n c l u d e #i n c l u d e ” c o l e t o r e s t a t i s t i c a s . h” ” p o p u l a d o r . h” #i n c l u d e <a l g o r i t h m > #i n c l u d e <QMessageBox> #i n c l u d e <QDebug> WidgetIntervalosQuant : : WidgetIntervalosQuant ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , QWidget ∗ p a r e n t ) : QWidget ( p a r e n t ) { i n i c i a l i z e ( atributos ) ; } 266 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 WidgetIntervalosQuant : : WidgetIntervalosQuant ( c o n s t s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t ) : QWidget ( p a r e n t ) { v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; i n i c i a l i z e ( atributos ) ; } WidgetIntervalosQuant : : ˜ WidgetIntervalosQuant () { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; for { delete void { atributos = atributos ; P o p u l a d o r : : populeComboBox ( u i . c o m b o B o x A t r i b u t o s F i l t r o , } void { WidgetIntervalosQuant : : setHabilitadoComboBoxAtributos ( const habilitado ) bool u i . c o m b o B o x A t r i b u t o s F i l t r o −>s e t E n a b l e d ( h a b i l i t a d o ) ; } void WidgetIntervalosQuant : : setAtributoAtualComboBoxAtributos ( const &a t r i b u t o ) v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = s t d : : f i n d ( cbegin () , a t r i b u t o s . cend ( ) , a t r i b u t o ) ; 65 66 67 68 85 86 atributos ) ; addIntervaloClick () ; 63 64 75 76 77 78 79 80 81 82 83 84 v e c t o r <s t r i n g > &a t r i b u t o s ) c o n n e c t ( u i . p u s h B u t t o n A d d I n t e r v a l o , SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( addIntervaloClick () ) ) ; c o n n e c t ( u i . c o m b o B o x A t r i b u t o s F i l t r o , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , t h i s , SLOT( c u r r e n t I n d e x C h a n g e d C o m b o B o x A t r i b u t o s F i l t r o ( c o n s t Q S t r i n g &) ) ) ; { 73 74 WidgetIntervalosQuant : : i n i c i a l i z e ( const ui . setupUi ( t h i s ) ; 58 59 60 61 62 69 70 71 72 ∗citIntervalo ; } } 50 51 52 53 54 55 56 57 ( v e c t o r <W i d g e t I n t e r v a l o Q u a n t ∗ > : : c o n s t i t e r a t o r c i t I n t e r v a l o = widgetsIntervalosQuant . cbegin () ; c i t I n t e r v a l o != w i d g e t s I n t e r v a l o s Q u a n t . cend ( ) ; c i t I n t e r v a l o ++) if { ( citAtributo != string atributos . a t r i b u t o s . cend ( ) ) u i . c o m b o B o x A t r i b u t o s F i l t r o −>s e t C u r r e n t I n d e x ( c i t A t r i b u t o − a t r i b u t o s . cbegin () ) ; } } void W i d g e t I n t e r v a l o s Q u a n t : : g e r a r I n t e r v a l o s ( v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s ) c o n s t { for ( v e c t o r <W i d g e t I n t e r v a l o Q u a n t ∗ > : : c o n s t i t e r a t o r c i t I n t e r v a l o = widgetsIntervalosQuant . cbegin () ; w i d g e t s I n t e r v a l o s Q u a n t . cend ( ) ; c i t I n t e r v a l o != c i t I n t e r v a l o ++) { i n t e r v a l o s . p u s h b a c k ( ( ∗ c i t I n t e r v a l o )−>g e r a r I n t e r v a l o ( ) ) ; } } void { WidgetIntervalosQuant : : addIntervaloClick () const s t r i n g a t r i b u t o = u i . c o m b o B o x A t r i b u t o s F i l t r o −>c u r r e n t T e x t ( ) . toLatin1 ( ) . data ( ) ; const C o l e t o r E s t a t i s t i c a s : : E s t a t i s t i c a Q u a n t &e s t a t i s t i c a Q u a n t = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> estatisticaAtributoQuantitativo ( atributo ) ; 267 87 88 W i d g e t I n t e r v a l o Q u a n t ∗ w i d g e t I n t e r v a l o Q u a n t = new W i d g e t I n t e r v a l o Q u a n t ( e s t a t i s t i c a Q u a n t . maximo + 1 , e s t a t i s t i c a Q u a n t . minimo − 1 , u i . scrollArea ) ; c o n n e c t ( w i d g e t I n t e r v a l o Q u a n t , SIGNAL ( r e m o v e r I n t e r v a l o W i d g e t ( W i d g e t I n t e r v a l o Q u a n t ∗ ) ) , t h i s , SLOT( r e m o v e r I n t e r v a l o W i d g e t ( WidgetIntervaloQuant ∗) ) ) ; w i d g e t s I n t e r v a l o s Q u a n t . push back ( widgetIntervaloQuant ) ; u i . s c r o l l A r e a −>w i d g e t ( )−>l a y o u t ( )−>addWidget ( w i d g e t I n t e r v a l o Q u a n t ) ; 89 90 91 92 93 94 95 96 97 98 } if { } v e c t o r <W i d g e t I n t e r v a l o Q u a n t ∗ > : : c o n s t i t e r a t o r c i t I n t e r v a l o = s t d : : f i n d ( widgetsIntervalosQuant . cbegin () , w i d g e t s I n t e r v a l o s Q u a n t . cend ( ) , intervaloWidget ) ; if { void { 154 w i d g e t s I n t e r v a l o s Q u a n t . cend ( ) ) } 119 120 121 122 123 124 125 126 127 146 147 148 149 150 151 152 153 != } { 141 142 143 144 145 ( citIntervalo u i . s c r o l l A r e a −>w i d g e t ( )−>l a y o u t ( )−>removeWidget ( ∗ c i t I n t e r v a l o ) ; delete ∗ citIntervalo ; widgetsIntervalosQuant . erase ( citIntervalo ) ; 113 114 115 116 117 118 128 129 130 131 132 133 134 135 136 137 138 139 140 ( w i d g e t s I n t e r v a l o s Q u a n t . s i z e ( ) == 1 ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”É n e c e s s á r i o t e r p e l o menos um i n t e r v a l o ! ” ) ) ; return ; 99 100 101 102 103 104 105 106 107 108 109 110 111 112 WidgetIntervalosQuant : : removerIntervaloWidget ( WidgetIntervaloQuant ∗ intervaloWidget ) void { WidgetIntervalosQuant : : setVisibilidadeComboAtributos ( const visivel ) bool u i . c o m b o B o x A t r i b u t o s F i l t r o −>s e t V i s i b l e ( v i s i v e l ) ; u i . l a b e l A t r i b u t o F i l t r o −>s e t V i s i b l e ( v i s i v e l ) ; } void WidgetIntervalosQuant : : currentIndexChangedComboBoxAtributosFiltro ( c o n s t Q S t r i n g &t e x t ) const if { string a t r i b u t o = t e x t . toLatin1 ( ) . data ( ) ; ( ! T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e x i s t e A t r i b u t o ( a t r i b u t o ) ) return ; } for ( v e c t o r <W i d g e t I n t e r v a l o Q u a n t ∗ > : : c o n s t i t e r a t o r c i t I n t e r v a l o = widgetsIntervalosQuant . cbegin () ; c i t I n t e r v a l o != w i d g e t s I n t e r v a l o s Q u a n t . cend ( ) ; c i t I n t e r v a l o ++) { u i . s c r o l l A r e a −>w i d g e t ( )−>l a y o u t ( )−>removeWidget ( ∗ c i t I n t e r v a l o ) ; delete ∗ citIntervalo ; } widgetsIntervalosQuant . clear () ; addIntervaloClick () ; } bool W i d g e t I n t e r v a l o s Q u a n t : : h a R e g i s t r o ( s t r i n g &e r r o , r e g i s t r o s V a l i d o s ) const v e c t o r <s i z e t > & { const const bool bool m i s s i n gs T m b = u i . c h e c k B o x C o n s M i s s i n g s−>i s C h e c k e d ( ) ; i n v a l i d o s T m b = u i . c h e c k B o x C o n s I n v a l i d o s −>i s C h e c k e d ( ) ; v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > i n t e r v a l o s = v e c t o r < T a b e l a D e R e g i s t r o s : : I n t e r v a l o >() ; try { gerarIntervalos ( intervalos ) ; } c a t c h ( s t d : : e x c e p t i o n &e ) { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( e . what ( ) ) ) ; e r r o = ” E r r o ao g e r a r o i n t e r v a l o ! ” ; QString : : 268 155 156 157 158 return false ; } 159 c o n s t s t r i n g &a t r i b u t o = a t r i b u t o s [ u i . c o m b o B o x A t r i b u t o s F i l t r o −> currentIndex () ] ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> identificarRegistrosQuantPorIntervalo ( atributo , intervalos , missingsTmb , i n v a l i d o s T m b , r e g i s t r o s V a l i d o s ) ; 160 161 162 163 if { 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 ( r e g i s t r o s V a l i d o s . empty ( ) ) e r r o = ”Não f o r a m inseridos ” ; false ; encontrados registros de a c o r d o com o s intervalos return } return true ; } c o n s t s t r i n g &W i d g e t I n t e r v a l o s Q u a n t : : a t r i b u t o A t u a l ( ) c o n s t { return a t r i b u t o s [ u i . c o m b o B o x A t r i b u t o s F i l t r o −>c u r r e n t I n d e x ( ) ] ; } bool { WidgetIntervalosQuant : : c o n s i d e r a r M i s s i n g s () return const u i . c h e c k B o x C o n s M i s s i n g s−>i s C h e c k e d ( ) ; } bool { WidgetIntervalosQuant : : c o n s i d e r a r I n v a l i d o s ( ) return const u i . c h e c k B o x C o n s I n v a l i d o s −>i s C h e c k e d ( ) ; } void { WidgetIntervalosQuant : : checkConsiderarMissings ( bool checked ) u i . c h e c k B o x C o n s M i s s i n g s−>s e t C h e c k e d ( c h e c k e d ) ; } void { WidgetIntervalosQuant : : checkConsiderarInvalidos ( bool checked ) u i . c h e c k B o x C o n s I n v a l i d o s −>s e t C h e c k e d ( c h e c k e d ) ; } Listagem B.87: widget intervalos quant.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #i f n d e f WIDGET INTERVALOS QUANT H #d e f i n e WIDGET INTERVALOS QUANT H #i n c l u d e ” u i w i d g e t i n t e r v a l o s q u a n t . h” #i n c l u d e ” w i d g e t i n t e r v a l o q u a n t . h” #i n c l u d e <v e c t o r > #i n c l u d e <s t r i n g > using namespace std ; c l a s s WidgetIntervalosQuant { Q OBJECT : public QWidget public : W i d g e t I n t e r v a l o s Q u a n t ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , QWidget ∗ p a r e n t = 0) ; W i d g e t I n t e r v a l o s Q u a n t ( c o n s t s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t = 0 ) ; ˜ WidgetIntervalosQuant () ; v o i d i n i c i a l i z e ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s ) ; void setHabilitadoComboBoxAtributos ( const bool h a b i l i t a d o ) ; v o i d s e t A t r i b u t o A t u a l C o m b o B o x A t r i b u t o s ( c o n s t s t r i n g &a t r i b u t o ) ; void setVisibilidadeComboAtributos ( const bool v i s i v e l ) ; v o i d g e r a r I n t e r v a l o s ( v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > & i n t e r v a l o s ) const ; b o o l h a R e g i s t r o ( s t r i n g &e r r o , v e c t o r <s i z e t > & r e g i s t r o s V a l i d o s ) c o n s t ; bool considerarMissings () const ; bool c o n s i d e r a r I n v a l i d o s () const ; void checkConsiderarMissings ( bool checked ) ; void c h e c k C o n s i d e r a r I n v a l i d o s ( bool checked ) ; c o n s t s t r i n g &a t r i b u t o A t u a l ( ) c o n s t ; 269 32 33 p r i v a t e : 34 Ui : : W i d g e t I n t e r v a l o s Q u a n t u i ; 35 v e c t o r <s t r i n g > atributos ; 36 v e c t o r <W i d g e t I n t e r v a l o Q u a n t∗> widgetsIntervalosQuant ; 37 38 p r i v a t e s l o t s : 39 void addIntervaloClick () ; 40 v o i d c u r r e n t I n d e x C h a n g e d C o m b o B o x A t r i b u t o s F i l t r o ( c o n s t Q S t r i n g &) ; 41 42 p u b l i c s l o t s : 43 void removerIntervaloWidget ( WidgetIntervaloQuant ∗ intervaloWidget ) ; 44 } ; 45 46 #e n d i f // WIDGET INTERVALOS QUANT H Listagem B.88: widget intervalos quant.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >W i d g e t I n t e r v a l o s Q u a n t </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t I n t e r v a l o s Q u a n t ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >512</width> 10 <h e i g h t >374</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >I n t e r v a l o s Q u a n t </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 17 <i t e m> 18 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 19 <i t e m> 20 <w i d g e t c l a s s =” QLabel ” name=” l a b e l A t r i b u t o F i l t r o ”> 21 <p r o p e r t y name=” t e x t ”> 22 <s t r i n g >A t r i b u t o F i l t r o : </ s t r i n g > 23 </ p r o p e r t y > 24 </w i d g e t > 25 </i t e m> 26 <i t e m> 27 <w i d g e t c l a s s =”QComboBox” name=” c o m b o B o x A t r i b u t o s F i l t r o ”> 28 <p r o p e r t y name=” minimumSize ”> 29 <s i z e > 30 <width >100</width> 31 <h e i g h t >0</ h e i g h t > 32 </ s i z e > 33 </ p r o p e r t y > 34 </w i d g e t > 35 </i t e m> 36 <i t e m> 37 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 38 <p r o p e r t y name=” o r i e n t a t i o n ”> 39 <enum>Qt : : H o r i z o n t a l </enum> 40 </ p r o p e r t y > 41 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 42 <s i z e > 43 <width >40</width> 44 <h e i g h t >20</ h e i g h t > 45 </ s i z e > 46 </ p r o p e r t y > 47 </ s p a c e r > 48 </i t e m> 49 <i t e m> 50 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n A d d I n t e r v a l o ”> 51 <p r o p e r t y name=” t e x t ”> 52 <s t r i n g >+ I n t e r v a l o </ s t r i n g > 53 </ p r o p e r t y > 54 </w i d g e t > 55 </i t e m> 56 </ l a y o u t > 57 </i t e m> 58 <i t e m> 59 <w i d g e t c l a s s =” Q S c r o l l A r e a ” name=” s c r o l l A r e a ”> 60 <p r o p e r t y name=” w i d g e t R e s i z a b l e ”> 61 <b o o l >t r u e </b o o l > 270 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 </ p r o p e r t y > <w i d g e t c l a s s =” QWidget ” name=” s c r o l l A r e a W i d g e t C o n t e n t s ”> <p r o p e r t y name=” g e o m e t r y ”> <r e c t > <x>0</x> <y>0</y> <width >492</width> <h e i g h t >264</ h e i g h t > </ r e c t > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> <p r o p e r t y name=” s p a c i n g ”> <number>2</number> </ p r o p e r t y > <p r o p e r t y name=” l e f t M a r g i n ”> <number>3</number> </ p r o p e r t y > <p r o p e r t y name=” t o p M a r g i n ”> <number>3</number> </ p r o p e r t y > <p r o p e r t y name=” r i g h t M a r g i n ”> <number>3</number> </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>3</number> </ p r o p e r t y > </ l a y o u t > </w i d g e t > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >C o n s i d e r a r também: </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> <i t e m> <w i d g e t c l a s s =” QCheckBox ” name=” c h e c k B o x C o n s M i s s i n g s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >M i s s i n g s </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 3 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e T y p e ”> <enum>Q S i z e P o l i c y : : F i x e d </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >20</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> <i t e m> <w i d g e t c l a s s =” QCheckBox ” name=” c h e c k B o x C o n s I n v a l i d o s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >I n v á l i d o s </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> 271 144 </ l a y o u t > 145 </w i d g e t > 146 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 147 < r e s o u r c e s /> 148 <c o n n e c t i o n s /> 149 </u i > Listagem B.89: widget intervalos quant.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #i n c l u d e ” w i d g e t p a r a m d i a g c a i x a . h” #i n c l u d e #i n c l u d e ” c o l e t o r e s t a t i s t i c a s . h” ” u t i l i d a d e s . h” #i n c l u d e <QDebug> WidgetParamDiagCaixa : : WidgetParamDiagCaixa ( c o n s t s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t ) : QWidget ( p a r e n t ) , atributo ( atributo ) { ui . setupUi ( t h i s ) ; const in ici liz arL abe ls () ; 17 18 connect ( ui . pushButtonAplicarTodos , emitirParametros () ) ) ; 19 20 21 22 23 if { SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( ( ! telaImportacao ) u i . p u s h B u t t o n A p l i c a r T o d o s−>s e t V i s i b l e ( f a l s e ) ; u i . h o r i z o n t a l S p a c e r −>c h a n g e S i z e ( 0 , 0 , Q S i z e P o l i c y : : F i x e d , QSizePolicy : : Fixed ) ; } } WidgetParamDiagCaixa : : ˜ WidgetParamDiagCaixa ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; qDebug ( ) << } void { WidgetParamDiagCaixa : : i n i c i l i z a r L a b e l s ( ) const 36 37 C o l e t o r E s t a t i s t i c a s : : EstatisticaQuant &e s t a t i s t i c a = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> estatisticaAtributoQuantitativo ( atributo ) ; u i . l a b e l D I −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : e s t a t i s t i c a . d e s v i o I n t e r q u a r t i l i c o , 3) . c s t r ( ) ) ) u i . l a b e l Q S−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : e s t a t i s t i c a . q u a r t i l S u p e r i o r , 3) . c s t r ( ) ) ) ; u i . l a b e l Q I −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : e s t a t i s t i c a . q u a r t i l I n f e r i o r , 3) . c s t r ( ) ) ) ; 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 telaImportacao , u i . doubleSpinBoxFatorWS−>s e t V a l u e ( C o l e t o r E s t a t i s t i c a s : : FATOR WISKER SUPERIOR ) ; u i . d o u b l e S p i n B o x F a t o r W I−>s e t V a l u e ( C o l e t o r E s t a t i s t i c a s : : FATOR WISKER INFEIROR ) ; 16 24 25 26 27 28 29 30 31 32 33 34 35 bool dblToStdStr ( ; dblToStdStr ( dblToStdStr ( } d o u b l e WidgetParamDiagCaixa : : fatorWS ( ) c o n s t { r e t u r n u i . doubleSpinBoxFatorWS−>v a l u e ( ) ; } d o u b l e WidgetParamDiagCaixa : : f a t o r W I ( ) c o n s t { r e t u r n u i . d o u b l e S p i n B o x F a t o r W I−>v a l u e ( ) ; } void { WidgetParamDiagCaixa : : s e t F a t o r W I ( c o n s t double fatorWI ) u i . d o u b l e S p i n B o x F a t o r W I−>s e t V a l u e ( f a t o r W I ) ; } void { WidgetParamDiagCaixa : : setFatorWS ( c o n s t double u i . doubleSpinBoxFatorWS−>s e t V a l u e ( fatorWS ) ; } fatorWS ) 272 61 62 63 64 65 void { WidgetParamDiagCaixa : : e m i t i r P a r a m e t r o s ( ) emit aplicarParamsDCTodos ( fatorWI ( ) , fatorWS ( ) ) ; } Listagem B.90: widget param diag caixa.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #i f n d e f WIDGET PARAM DIAG CAIXA H #d e f i n e WIDGET PARAM DIAG CAIXA H #i n c l u d e ” u i w i d g e t p a r a m d i a g c a i x a . h” #i n c l u d e <s t r i n g > using namespace std ; c l a s s WidgetParamDiagCaixa { Q OBJECT : public QWidget public : WidgetParamDiagCaixa ( c o n s t b o o l t e l a I m p o r t a c a o , QWidget ∗ p a r e n t = 0 ) ; ˜ WidgetParamDiagCaixa ( ) ; d o u b l e fatorWS ( ) c o n s t ; double fatorWI ( ) const ; void setFatorWI ( c o n s t double fatorWI ) ; v o i d setFatorWS ( c o n s t d o u b l e fatorWS ) ; 16 17 18 19 20 21 22 p r i v a t e : 23 Ui : : WidgetParamDiagCaixa u i ; 24 string atributo ; 25 26 void i n i c i l i z a r L a b e l s () ; 27 28 p r i v a t e s l o t s : 29 void emitirParametros () ; 30 31 s i g n a l s : 32 v o i d aplicarParamsDCTodos ( c o n s t double , 33 34 } ; 35 36 #e n d i f // WIDGET PARAM DIAG CAIXA H const const s t r i n g &a t r i b u t o , double ) ; Listagem B.91: widget param diag caixa.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >WidgetParamDiagCaixa </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” WidgetParamDiagCaixa ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >403</width> 10 <h e i g h t >168</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >WidgetParamDiagCaixa </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 17 <i t e m> 18 <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> 19 <i t e m row=” 0 ” column=” 0 ”> 20 <w i d g e t c l a s s =” QLabel ” name=” l a b e l ”> 21 <p r o p e r t y name=” t e x t ”> 22 <s t r i n g >D e s v i o i n t e r q u a r tı́ l i c o : </ s t r i n g > 23 </ p r o p e r t y > 24 </w i d g e t > 25 </i t e m> 26 <i t e m row=” 0 ” column=” 1 ”> 27 <w i d g e t c l a s s =” QLabel ” name=” l a b e l D I ”> 28 <p r o p e r t y name=” t e x t ”> 273 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 <s t r i n g >T e x t L a b e l </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 6 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Q u a r tı́ l s u p e r i o r : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l Q S ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T e x t L a b e l </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 2 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 7 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Q u a r tı́ l i n f e r i o r : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 2 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l Q I ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T e x t L a b e l </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 2 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >W h i s k e r s u p e r i o r = q u a r t i l s u p e r i o r + </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” a l i g n m e n t ”> <s e t >Qt : : A l i g n R i g h t | Qt : : A l i g n T r a i l i n g | Qt : : A l i g n V C e n t e r </ s e t > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QDoubleSpinBox ” name=” doubleSpinBoxFatorWS ”> <p r o p e r t y name=”maximum”> <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > </ p r o p e r t y > <p r o p e r t y name=” s i n g l e S t e p ”> <d o u b l e >0 .1 0 0 00 0 0 00 0 00 0 0 0 </ d o u b l e > </ p r o p e r t y > <p r o p e r t y name=” v a l u e ”> <d o u b l e >1 .5 0 0 00 0 0 00 0 00 0 0 0 </ d o u b l e > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 4 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g > ∗ D e s v i o i n t e r q u a r tı́ l i c o </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 3 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> 274 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 2 ”> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 4 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e T y p e ”> <enum>Q S i z e P o l i c y : : F i x e d </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >8</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 3 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >W h i s k e r i n f e r i o r = q u a r t i l i n f e r i o r − </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” a l i g n m e n t ”> <s e t >Qt : : A l i g n R i g h t | Qt : : A l i g n T r a i l i n g | Qt : : A l i g n V C e n t e r </ s e t > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QDoubleSpinBox ” name=” d o u b l e S p i n B o x F a t o r W I ”> <p r o p e r t y name=”maximum”> <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > </ p r o p e r t y > <p r o p e r t y name=” s i n g l e S t e p ”> <d o u b l e >0 . 10 0 00 0 0 00 0 0 00 0 0 </ d o u b l e > </ p r o p e r t y > <p r o p e r t y name=” v a l u e ”> <d o u b l e >1 . 50 0 00 0 0 00 0 0 00 0 0 </ d o u b l e > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 5 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g > ∗ D e s v i o i n t e r q u a r tı́ l i c o </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 3 ”> <i t e m> <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n A p l i c a r T o d o s ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >A p l i c a r e s t e s p a r â m e t r o s p a r a o s d e m a i s a t r i b u t o s </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > 275 193 </ s p a c e r > 194 </i t e m> 195 </ l a y o u t > 196 </i t e m> 197 <i t e m> 198 <s p a c e r name=” v e r t i c a l S p a c e r ”> 199 <p r o p e r t y name=” o r i e n t a t i o n ”> 200 <enum>Qt : : V e r t i c a l </enum> 201 </ p r o p e r t y > 202 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 203 <s i z e > 204 <width >20</width> 205 <h e i g h t >1</ h e i g h t > 206 </ s i z e > 207 </ p r o p e r t y > 208 </ s p a c e r > 209 </i t e m> 210 </ l a y o u t > 211 </w i d g e t > 212 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 213 < r e s o u r c e s /> 214 <c o n n e c t i o n s /> 215 </u i > Listagem B.92: widget param diag caixa.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #i n c l u d e ” w i d g e t p a r a m z s c o r e . h” #i n c l u d e #i n c l u d e ” c o l e t o r e s t a t i s t i c a s . h” ” u t i l i d a d e s . h” #i n c l u d e <QDebug> WidgetParamZscore : : WidgetParamZscore ( c o n s t s t r i n g &a t r i b u t o , QWidget ∗ p a r e n t ) : QWidget ( p a r e n t ) , atributo ( atributo ) { ui . setupUi ( t h i s ) ; const inicializarLabels () ; connect ( ui . pushButtonAplicarTodos , emitirParametros () ) ) ; if { SIGNAL ( c l i c k e d ( ) ) , t h i s , SLOT( ( ! telaImportacao ) u i . p u s h B u t t o n A p l i c a r T o d o s−>s e t V i s i b l e ( f a l s e ) ; u i . h o r i z o n t a l S p a c e r −>c h a n g e S i z e ( 0 , 0 , Q S i z e P o l i c y : : F i x e d , QSizePolicy : : Fixed ) ; } } WidgetParamZscore : : ˜ WidgetParamZscore ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; qDebug ( ) << } void { WidgetParamZscore : : i n i c i a l i z a r L a b e l s ( ) const 36 37 C o l e t o r E s t a t i s t i c a s : : EstatisticaQuant &e s t a t i s t i c a = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> estatisticaAtributoQuantitativo ( atributo ) ; u i . l a b e l D P−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : d b l T o S t d S t r ( e s t a t i s t i c a . desvioPadrao , 3) . c s t r ( ) ) ) ; u i . l a b e l M e d i a −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( U t i l i d a d e s : : d b l T o S t d S t r ( e s t a t i s t i c a . media , 3 ) . c s t r ( ) ) ) ; 38 39 40 41 42 43 44 45 46 telaImportacao , u i . doubleSpinBoxZmax−>s e t V a l u e ( C o l e t o r E s t a t i s t i c a s : : ZMAX) ; u i . d oubl eSp inBo xZmi n−>s e t V a l u e ( C o l e t o r E s t a t i s t i c a s : : ZMIN ) ; 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 bool } d o u b l e W i d g e t P a r a m Z s c o r e : : zMin ( ) c o n s t { r e t u r n u i . dou ble Spin Box Zmin−>v a l u e ( ) ; } 276 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 d o u b l e W i d g e t P a r a m Z s c o r e : : zMax ( ) c o n s t { r e t u r n u i . doubleSpinBoxZmax−>v a l u e ( ) ; } void { WidgetParamZscore : : setZMin ( c o n s t double zMin ) u i . d oub leSp inB oxZm in−>s e t V a l u e ( zMin ) ; } void { W i d g e t P a r a m Z s c o r e : : setZMax ( c o n s t double fatorWS ) u i . doubleSpinBoxZmax−>s e t V a l u e ( fatorWS ) ; } void { WidgetParamZscore : : e m i t i r P a r a m e t r o s ( ) emit a p l i c a r P a r a m s Z S T o d o s ( zMin ( ) , zMax ( ) ) ; } Listagem B.93: widget param zscore.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #i f n d e f WIDGET PARAM ZSCORE H #d e f i n e WIDGET PARAM ZSCORE H #i n c l u d e ” u i w i d g e t p a r a m z s c o r e . h” #i n c l u d e <s t r i n g > using namespace std ; c l a s s WidgetParamZscore { Q OBJECT : public QWidget public : WidgetParamZscore ( c o n s t b o o l t e l a I m p o r t a c a o , QWidget ∗ p a r e n t = 0 ) ; ˜ WidgetParamZscore ( ) ; d o u b l e zMin ( ) c o n s t ; d o u b l e zMax ( ) c o n s t ; v o i d s e t Z M i n ( c o n s t d o u b l e zMin ) ; v o i d setZMax ( c o n s t d o u b l e zMax ) ; 16 17 18 19 20 21 22 23 p r i v a t e : 24 Ui : : W i d g e t P a r a m Z s c o r e u i ; 25 string atributo ; 26 27 void i n i c i a l i z a r L a b e l s () ; 28 29 p r i v a t e s l o t s : 30 void emitirParametros () ; 31 32 s i g n a l s : 33 void aplicarParamsZSTodos ( const 34 } ; 35 36 #e n d i f // WIDGET PARAM ZSCORE H double , const const s t r i n g &a t r i b u t o , double ) ; Listagem B.94: widget param zscore.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >WidgetParamZscore </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t P a r a m Z s c o r e ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >274</width> 10 <h e i g h t >147</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >WidgetParamZscore </ s t r i n g > 277 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 3 ”> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> <i t e m> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Média : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 2 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >D e s v i o Padrão : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 3 ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >0</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Z mı́nimo : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 4 ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >0</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >Z máximo: </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l M e d i a ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T e x t L a b e l </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l D P ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T e x t L a b e l </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QDoubleSpinBox ” name=” d o u b l e S p i n B o x Z m i n ”> <p r o p e r t y name=”minimum”> <d o u b l e > −999999999.000000000000000 </ d o u b l e > </ p r o p e r t y > <p r o p e r t y name=”maximum”> <d o u b l e >0 . 00 0 00 0 0 00 0 0 00 0 0 </ d o u b l e > </ p r o p e r t y > <p r o p e r t y name=” v a l u e ”> <d o u b l e > −2.000000000000000 </ d o u b l e > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QDoubleSpinBox ” name=” doubleSpinBoxZmax ”> <p r o p e r t y name=”maximum”> <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > </ p r o p e r t y > 278 97 <p r o p e r t y name=” v a l u e ”> 98 <d o u b l e >2 .00 0 00 0 00 0 0 00 0 0 0 </ d o u b l e > 99 </ p r o p e r t y > 100 </w i d g e t > 101 </i t e m> 102 </ l a y o u t > 103 </i t e m> 104 <i t e m> 105 <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> 106 <p r o p e r t y name=” o r i e n t a t i o n ”> 107 <enum>Qt : : H o r i z o n t a l </enum> 108 </ p r o p e r t y > 109 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 110 <s i z e > 111 <width >40</width> 112 <h e i g h t >20</ h e i g h t > 113 </ s i z e > 114 </ p r o p e r t y > 115 </ s p a c e r > 116 </i t e m> 117 </ l a y o u t > 118 </i t e m> 119 <i t e m> 120 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t 3 ”> 121 <i t e m> 122 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n A p l i c a r T o d o s ”> 123 <p r o p e r t y name=” t e x t ”> 124 <s t r i n g >A p l i c a r e s t e s p a r â m e t r o s p a r a o s d e m a i s a t r i b u t o s </ s t r i n g > 125 </ p r o p e r t y > 126 </w i d g e t > 127 </i t e m> 128 <i t e m> 129 <s p a c e r name=” h o r i z o n t a l S p a c e r ”> 130 <p r o p e r t y name=” o r i e n t a t i o n ”> 131 <enum>Qt : : H o r i z o n t a l </enum> 132 </ p r o p e r t y > 133 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 134 <s i z e > 135 <width >40</width> 136 <h e i g h t >20</ h e i g h t > 137 </ s i z e > 138 </ p r o p e r t y > 139 </ s p a c e r > 140 </i t e m> 141 </ l a y o u t > 142 </i t e m> 143 <i t e m> 144 <s p a c e r name=” v e r t i c a l S p a c e r ”> 145 <p r o p e r t y name=” o r i e n t a t i o n ”> 146 <enum>Qt : : V e r t i c a l </enum> 147 </ p r o p e r t y > 148 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 149 <s i z e > 150 <width >20</width> 151 <h e i g h t >40</ h e i g h t > 152 </ s i z e > 153 </ p r o p e r t y > 154 </ s p a c e r > 155 </i t e m> 156 </ l a y o u t > 157 </w i d g e t > 158 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 159 < r e s o u r c e s /> 160 <c o n n e c t i o n s /> 161 </u i > Listagem B.95: widget param zscore.ui 1 #i n c l u d e ” w i d g e t p a r a m e t r o . h ” 2 3 #i n c l u d e <QDebug> 4 5 WidgetParametro : : WidgetParametro ( 6 c o n s t s t r i n g &nomeParametro , 7 const double v a l o r I n i c i a l , 8 QWidget ∗ p a r e n t ) 9 : QWidget ( p a r e n t ) , valorInicial ( valorInicial ) 10 { 11 ui . setupUi ( t h i s ) ; 279 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 u i . l a b e l P a r a m−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( nomeParametro . c s t r ( ) ) ) ; double s t e p = abs ( v a l o r I n i c i a l ) ∗ i f ( step < 0.01) {step = 0.01;} 0.05; //10% u i . d o u b l e S p i n B o x P a r a m e t r o−>s e t S i n g l e S t e p ( s t e p ) ; u i . d o u b l e S p i n B o x P a r a m e t r o−>s e t V a l u e ( v a l o r I n i c i a l ) ; connect ( ui . pushButtonValorInicial , valorInicialClick () ) ) ; SIGNAL ( c l i c k e d ( ) ) , WidgetParametro : : ˜ WidgetParametro ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; } d o u b l e WidgetParametro : : v a l o r P a r a m e t r o ( ) c o n s t { r e t u r n u i . d o u b l e S p i n B o x P a r a m e t r o−>v a l u e ( ) ; } void { WidgetParametro : : s e t V a l o r P a r a m e t r o ( c o n s t double valor ) u i . d o u b l e S p i n B o x P a r a m e t r o−>s e t V a l u e ( v a l o r ) ; } void { WidgetParametro : : v a l o r I n i c i a l C l i c k ( ) u i . d o u b l e S p i n B o x P a r a m e t r o−>s e t V a l u e ( valorInicial ) ; } Listagem B.96: widget parametro.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 t h i s , SLOT( } #i f n d e f WIDGET PARAMETRO H #d e f i n e WIDGET PARAMETRO H #i n c l u d e ” u i w i d g e t p a r a m e t r o . h” #i n c l u d e <s t r i n g > using namespace std ; c l a s s WidgetParametro { Q OBJECT : public QWidget public : WidgetParametro ( c o n s t s t r i n g &nomeParametro , const double v a l o r I n i c i a l , QWidget ∗ p a r e n t = 0 ) ; ˜ WidgetParametro ( ) ; double valorParametro ( ) const ; void setValorParametro ( const double valor ) ; private : Ui : : W i d g e t P a r a m e t r o u i ; valorInicial ; double private slots : void v a l o r I n i c i a l C l i c k () ; }; #e n d i f // WIDGET PARAMETRO H Listagem B.97: widget parametro.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >WidgetParametro </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t P a r a m e t r o ”> 280 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >241</width> 10 <h e i g h t >23</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >WidgetParametro </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> 17 <p r o p e r t y name=” l e f t M a r g i n ”> 18 <number>0</number> 19 </ p r o p e r t y > 20 <p r o p e r t y name=” t o p M a r g i n ”> 21 <number>0</number> 22 </ p r o p e r t y > 23 <p r o p e r t y name=” r i g h t M a r g i n ”> 24 <number>0</number> 25 </ p r o p e r t y > 26 <p r o p e r t y name=” bottomMargin ”> 27 <number>0</number> 28 </ p r o p e r t y > 29 <i t e m> 30 <w i d g e t c l a s s =” QLabel ” name=” l a b e l P a r a m ”> 31 <p r o p e r t y name=” minimumSize ”> 32 <s i z e > 33 <width >75</width> 34 <h e i g h t >0</ h e i g h t > 35 </ s i z e > 36 </ p r o p e r t y > 37 <p r o p e r t y name=” t e x t ”> 38 <s t r i n g >T e x t L a b e l </ s t r i n g > 39 </ p r o p e r t y > 40 <p r o p e r t y name=” a l i g n m e n t ”> 41 <s e t >Qt : : A l i g n R i g h t | Qt : : A l i g n T r a i l i n g | Qt : : A l i g n V C e n t e r </ s e t > 42 </ p r o p e r t y > 43 </w i d g e t > 44 </i t e m> 45 <i t e m> 46 <w i d g e t c l a s s =” QDoubleSpinBox ” name=” d o u b l e S p i n B o x P a r a m e t r o ”> 47 <p r o p e r t y name=”minimum”> 48 <d o u b l e > −999999999.000000000000000 </ d o u b l e > 49 </ p r o p e r t y > 50 <p r o p e r t y name=”maximum”> 51 <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > 52 </ p r o p e r t y > 53 </w i d g e t > 54 </i t e m> 55 <i t e m> 56 <w i d g e t c l a s s =” QPushButton ” name=” p u s h B u t t o n V a l o r I n i c i a l ”> 57 <p r o p e r t y name=” t e x t ”> 58 <s t r i n g >V a l o r i n i c i a l </ s t r i n g > 59 </ p r o p e r t y > 60 </w i d g e t > 61 </i t e m> 62 </ l a y o u t > 63 </w i d g e t > 64 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 65 < r e s o u r c e s /> 66 <c o n n e c t i o n s /> 67 </u i > Listagem B.98: widget parametro.ui 1 2 3 4 5 6 7 8 9 10 11 12 #i n c l u d e ” w i d g e t r e g r e s s a o l i n e a r s i m p l e s . h” #i n c l u d e #i n c l u d e ” t a b e l a r e g i s t r o s . h” ” p o p u l a d o r . h” #i n c l u d e <QDebug> WidgetRegressaoLinearSimples : : WidgetRegressaoLinearSimples ( c o n s t s t r i n g &a t r i b u t o D e p e n d e n t e , c o n s t v e c t o r <s t r i n g > &t o d o s A t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , QWidget ∗ p a r e n t ) 281 13 14 15 16 17 : { ui . setupUi ( t h i s ) ; u i . l a b e l D e p e n d e n t e −>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( a t r i b u t o D e p e n d e n t e . c str () ) ) ; 18 19 v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o D e p = s t d : : f i n d ( a t r i b u t o s I n d a t r i b u t o s I n d . end ( ) , atributoDependente ) ; . begin () , const s i z e t atributoDepIndice = citAtributoDep − atributosInd . cbegin () ; indicesValidosAtributoDep = indicesValidosPorAtributo [ atributoDepIndice ] ; atributosInd . erase ( citAtributoDep ) ; indicesValidosPorAtributoInd . erase ( indicesValidosPorAtributoInd . begin () + atributoDepIndice ) ; 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 QWidget ( p a r e n t ) , atributoDependente ( atributoDependente ) , atributosInd ( todosAtributos ) , indicesValidosPorAtributoInd ( indicesValidosPorAtributo ) P o p u l a d o r : : populeComboBox ( u i . c o m b o B o x A t r i b u t o I n d e p , atributosInd ) ; c o n n e c t ( u i . c o m b o B o x A t r i b u t o I n d e p , SIGNAL ( c u r r e n t I n d e x C h a n g e d ( c o n s t Q S t r i n g &) ) , t h i s , SLOT( c u r r e n t I n d e x C h a n g e d C o m b o B o x I n d e p e n d e n t e ( ) ) ) ; currentIndexChangedComboBoxIndependente ( ) ; } WidgetRegressaoLinearSimples : : ˜ WidgetRegressaoLinearSimples () { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; qDebug ( ) << } const R e g r e s s a o L i n e a r S i m p l e s &W i d g e t R e g r e s s a o L i n e a r S i m p l e s : : regressaoLinearSimples () const { return regressaoLinearSimples ; } s t r i n g WidgetRegressaoLinearSimples : : atributoIndep () const { r e t u r n u i . c o m b o B o x A t r i b u t o I n d e p−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; } void W i d g e t R e g r e s s a o L i n e a r S i m p l e s : : currentIndexChangedComboBoxIndependente () { const s t r i n g a t r i b u t o I n d e p e n d e n t e = u i . c o m b o B o x A t r i b u t o I n d e p−> currentText ( ) . t oLa tin 1 ( ) . data ( ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( atributoIndependente ) ; a t r i b u t o s . push back ( atributoDependente ) ; std : : sort ( indicesValidosAtributoDep . begin () , indicesValidosAtributoDep . begin () ) ; v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o I n d = s t d : : f i n d ( a t r i b u t o s I n d . begin () , a t r i b u t o s I n d . end ( ) , a t r i b u t o I n d e p e n d e n t e ) ; atributosInd . cbegin () ; const s i z e t indiceAtrbInd = citAtributoInd − v e c t o r <s i z e t > &i n d i c e s V a l i d o s A t r i b u t o I n d = indicesValidosPorAtributoInd [ indiceAtrbInd ] ; std : : sort ( indicesValidosAtributoInd . begin () , indicesValidosAtributoInd . begin () ) ; v e c t o r <s i z e t > i n d i c e s I n t e r s e c c a o = v e c t o r <s i z e t >() ; s e t i n t e r s e c t i o n ( indicesValidosAtributoDep . begin () , i n d i c e s V a l i d o s A t r i b u t o D e p . end ( ) , indicesValidosAtributoInd . begin () , i n d i c e s V a l i d o s A t r i b u t o I n d . end ( ) , i n s e r t e r ( i n d i c e s I n t e r s e c c a o , i n d i c e s I n t e r s e c c a o . begin () ) ) ; v e c t o r <v e c t o r <d o u b l e >> v a l o r e s C o l u n a s = v e c t o r <v e c t o r <d o u b l e >>() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>v a l o r e s A t r i b u t o s Q u a n t D b l P o r I n d i c e ( atributos , indicesInterseccao , false , valoresColunas ) ; regressaoLinearSimples = RegressaoLinearSimples ( valoresColunas [ 0 ] , valoresColunas [ 1 ] ) ; u i . d o u b l e S p i n B o x A l p h a−>s e t V a l u e ( r e g r e s s a o L i n e a r S i m p l e s . a l p h a ( ) ) ; u i . d o u b l e S p i n B o x B e t a−>s e t V a l u e ( r e g r e s s a o L i n e a r S i m p l e s . b e t a ( ) ) ; 282 77 } Listagem B.99: widget regressao linear simples.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #i f n d e f WIDGET REGRESSAO LINEAR SIMPLES H #d e f i n e WIDGET REGRESSAO LINEAR SIMPLES H #i n c l u d e <QWidget> #i n c l u d e ” u i w i d g e t r e g r e s s a o l i n e a r s i m p l e s . h ” #i n c l u d e ” r e g r e s s a o l i n e a r s i m p l e s . h” #i n c l u d e <s t r i n g > using namespace std ; c l a s s WidgetRegressaoLinearSimples { Q OBJECT : public QWidget public : WidgetRegressaoLinearSimples ( c o n s t s t r i n g &a t r i b u t o D e p e n d e n t e , c o n s t v e c t o r <s t r i n g > &t o d o s A t r i b u t o s , c o n s t v e c t o r <v e c t o r <s i z e t >> &i n d i c e s V a l i d o s P o r A t r i b u t o , QWidget ∗ p a r e n t = 0 ) ; ˜ WidgetRegressaoLinearSimples () ; c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o L i n e a r S i m p l e s ( ) string atributoIndep () const ; const ; private : Ui : : W i d g e t R e g r e s s a o L i n e a r S i m p l e s u i ; string atributoDependente ; v e c t o r <s i z e t > indicesValidosAtributoDep ; v e c t o r <s t r i n g > atributosInd ; indicesValidosPorAtributoInd ; v e c t o r <v e c t o r <s i z e t >> RegressaoLinearSimples regressaoLinearSimples ; private slots : void currentIndexChangedComboBoxIndependente ( ) ; }; #e n d i f // WIDGET REGRESSAO LINEAR SIMPLES H Listagem B.100: widget regressao linear simples.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >W i d g e t R e g r e s s a o L i n e a r S i m p l e s </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t R e g r e s s a o L i n e a r S i m p l e s ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >400</width> 10 <h e i g h t >110</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >W i d g e t R e g r e s s a o L i n e a r S i m p l e s </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t 2 ”> 17 <p r o p e r t y name=” s p a c i n g ”> 18 <number>0</number> 19 </ p r o p e r t y > 20 <p r o p e r t y name=” l e f t M a r g i n ”> 21 <number>0</number> 22 </ p r o p e r t y > 23 <p r o p e r t y name=” t o p M a r g i n ”> 24 <number>0</number> 25 </ p r o p e r t y > 26 <p r o p e r t y name=” r i g h t M a r g i n ”> 27 <number>0</number> 283 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 </ p r o p e r t y > <p r o p e r t y name=” bottomMargin ”> <number>0</number> </ p r o p e r t y > <i t e m> <w i d g e t c l a s s =”QGroupBox” name=” groupBox ”> <p r o p e r t y name=” t i t l e ”> <s t r i n g >R e g r e s s ã o l i n e a r </ s t r i n g > </ p r o p e r t y > <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> <i t e m> <l a y o u t c l a s s =” QFormLayout ” name=” f o r m L a y o u t ”> <i t e m row=” 0 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” P r e f e r r e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >C o n j u n t o d e p e n d e n t e (Y) : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 0 ” column=” 1 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l D e p e n d e n t e ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >T e x t L a b e l </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 0 ”> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 2 ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” P r e f e r r e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” t e x t ”> <s t r i n g >C o n j u n t o i n d e p e n d e n t e (X) : </ s t r i n g > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m row=” 1 ” column=” 1 ”> <w i d g e t c l a s s =”QComboBox” name=” c o m b o B o x A t r i b u t o I n d e p ”> <p r o p e r t y name=” s i z e P o l i c y ”> < s i z e p o l i c y h s i z e t y p e=” F i x e d ” v s i z e t y p e=” F i x e d ”> <h o r s t r e t c h >0</ h o r s t r e t c h > <v e r s t r e t c h >0</ v e r s t r e t c h > </ s i z e p o l i c y > </ p r o p e r t y > <p r o p e r t y name=” minimumSize ”> <s i z e > <width >150</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > </w i d g e t > </i t e m> </ l a y o u t > </i t e m> <i t e m> <l a y o u t c l a s s =” QHBoxLayout ” name=” h o r i z o n t a l L a y o u t ”> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 3 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >Yi = </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” a l i g n m e n t ”> <s e t >Qt : : A l i g n R i g h t | Qt : : A l i g n T r a i l i n g | Qt : : A l i g n V C e n t e r </ s e t > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QDoubleSpinBox ” name=” d o u b l e S p i n B o x A l p h a ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >75</width> <h e i g h t >0</ h e i g h t > </ s i z e > 284 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 </ p r o p e r t y > <p r o p e r t y name=” d e c i m a l s ”> <number>10</number> </ p r o p e r t y > <p r o p e r t y name=”minimum”> <d o u b l e > −999999999.000000000000000 </ d o u b l e > </ p r o p e r t y > <p r o p e r t y name=”maximum”> <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 4 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g > + </ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” a l i g n m e n t ”> <s e t >Qt : : A l i g n C e n t e r </ s e t > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QDoubleSpinBox ” name=” d o u b l e S p i n B o x B e t a ”> <p r o p e r t y name=” minimumSize ”> <s i z e > <width >75</width> <h e i g h t >0</ h e i g h t > </ s i z e > </ p r o p e r t y > <p r o p e r t y name=” d e c i m a l s ”> <number>10</number> </ p r o p e r t y > <p r o p e r t y name=”minimum”> <d o u b l e > −999999999.000000000000000 </ d o u b l e > </ p r o p e r t y > <p r o p e r t y name=”maximum”> <d o u b l e > 9 9 9 9 9 9 9 9 9 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 < / d o u b l e > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <w i d g e t c l a s s =” QLabel ” name=” l a b e l 5 ”> <p r o p e r t y name=” t e x t ”> <s t r i n g >∗ Xi</ s t r i n g > </ p r o p e r t y > <p r o p e r t y name=” a l i g n m e n t ”> <s e t >Qt : : A l i g n C e n t e r </ s e t > </ p r o p e r t y > </w i d g e t > </i t e m> <i t e m> <s p a c e r name=” h o r i z o n t a l S p a c e r 2 ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : H o r i z o n t a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >40</width> <h e i g h t >20</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </i t e m> <i t e m> <s p a c e r name=” v e r t i c a l S p a c e r ”> <p r o p e r t y name=” o r i e n t a t i o n ”> <enum>Qt : : V e r t i c a l </enum> </ p r o p e r t y > <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> <s i z e > <width >20</width> <h e i g h t >40</ h e i g h t > </ s i z e > </ p r o p e r t y > </ s p a c e r > </i t e m> </ l a y o u t > </w i d g e t > </i t e m> 285 192 </ l a y o u t > 193 </w i d g e t > 194 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 195 < r e s o u r c e s /> 196 <c o n n e c t i o n s /> 197 </u i > Listagem B.101: widget regressao linear simples.ui 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #i n c l u d e ” w i d g e t t a b e l a e d i t o r a . h” #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <Q A b s t r a c t I t e m V i e w> <Q A b s t r a c t B u t t o n> <QDebug> <QMenu> <QMenuBar> #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e ” dialog ” dialog ” dialog ” dialog ” dialog ” dialog ” dialog ” dialog ” dialog #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e ” c o l e t o r e s t a t i s t i c a s . h” ” p o p u l a d o r . h” ” u t i l i d a d e s . h” ” t h r e a d w o r k e r c o l e t a r e s t a t i s t i c a s . h” W i d g e t T a b e l a E d i t o r a : : W i d g e t T a b e l a E d i t o r a ( c o n s t v e c t o r <s i z e t > & i n d i c e s R e g i s t r o s , QWidget ∗ p a r e n t ) : WidgetProgresso ( parent ) , comboBox (NULL) , i n d i c e C o m b o (NULL) , totalLinhas ( indicesRegistros . size () ) , t a b l e V i e w E d i c a o M o d e l ( new QStandardItemModel ( t h i s ) ) , l i n h a C l i c k ( −1) , c o l u n a C l i c k ( −1) , indicesTodosRegistros ( indicesRegistros ) , registrosDestacadosPorAtributo () { ui . setupUi ( t h i s ) ; u i . t a b l e V i e w E d i c a o −>s e t M o d e l ( t a b l e V i e w E d i c a o M o d e l ) ; u i . t a b l e V i e w E d i c a o −>s e t S e l e c t i o n M o d e ( Q A b s t r a c t I t e m V i e w : : S i n g l e S e l e c t i o n ); u i . t a b l e V i e w E d i c a o −>s e t S o r t i n g E n a b l e d ( t r u e ) ; u i . t a b l e V i e w E d i c a o −>v e r t i c a l H e a d e r ( )−>s e t V i s i b l e ( f a l s e ) ; 33 34 35 36 37 v e c t o r <v e c t o r <s t r i n g >> r e g i s t r o s V e t o r = v e c t o r <v e c t o r <s t r i n g >>() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o s V e t o r S t r P o r I n d i c e ( indicesTodosRegistros , registrosVetor , true ) ; 38 39 v e c t o r <s t r i n g > a t r i b u t o s C o p i a = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ; a t r i b u t o s C o p i a . i n s e r t ( a t r i b u t o s C o p i a . b e g i n ( ) , ” Í n d i c e do r e g i s t r o ” ) ; 40 41 42 Populador : : populeTabela ( u i . tableViewEdicao , at r ib u t os C o pi a , registrosVetor ) ; u i . t a b l e V i e w E d i c a o −>s e t C o l u m n H i d d e n ( 0 , t r u e ) ; // e s c o n d e a p r i m e i r a c o l u n a que r e p r e s e n t a o Í n d i c e do r e g i s t r o 43 44 45 46 47 48 49 inicializaMenuBarra () ; u i . p r o g r e s s B a r −>s e t V a l u e ( 0 ) ; c o n n e c t ( u i . t a b l e V i e w E d i c a o , SIGNAL ( c l i c k e d ( c o n s t QModelIndex &) ) , t h i s , SLOT( c e l u l a C l i c k ( c o n s t QModelIndex &) ) ) ; c o n n e c t ( u i . t a b l e V i e w E d i c a o , SIGNAL ( d o u b l e C l i c k e d ( c o n s t QModelIndex &) ) , t h i s , SLOT( c e l u l a C l i c k D u p l o ( c o n s t QModelIndex &) ) ) ; c o n n e c t ( t a b l e V i e w E d i c a o M o d e l , SIGNAL ( itemChanged ( Q S t a n d a r d I t e m ∗ ) ) , t h i s , SLOT( c e l u l a A l t e r a d a ( Q S t a n d a r d I t e m ∗ ) ) ) ; 50 51 52 53 54 55 56 57 58 s u b s t q u a l . h” s u b s t q u a n t . h” r e n o m e a r . h” n o v a c o l u n a . h” e s c o l h e r d i s t r i b u i c a o . h” e s c o l h e r R L S . h” r e m i d e q u a l i . h” r e m i d e q u a n t . h” r e m i d e o u t l i e r s . h” } WidgetTabelaEditora : : ˜ WidgetTabelaEditora ( ) { c o n s t v o i d ∗ a d d r e s s = s t a t i c c a s t <c o n s t v o i d ∗>(&(∗ t h i s ) ) ; qDebug ( ) << FILE << ” ” << LINE << ” D e s t r u t o r ” << a d d r e s s ; 286 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 if if if ( comboBox ) d e l e t e comboBox ; ( indiceCombo ) d e l e t e indiceCombo ; ( tableViewEdicaoModel ) d e l e t e tableViewEdicaoModel ; } void { WidgetTabelaEditora : : i n i c i a l i z a M e n u B a r r a ( ) QAction QAction QAction QAction QAction QAction QAction QAction QAction QAction QAction QAction QAction QAction QAction ∗ removerLinhaAct ; ∗ removerColunaAct ; ∗inserirLinhaAct ; ∗inserirColunaAct ; ∗ mostrarTodosAct ; ∗ remLocValorAct ; ∗substituaAct ; ∗ renomearAct ; ∗ gerarValorDP ; ∗ popularLinhaDP ; ∗ popularColunaDP ; ∗remIdeOutliers ; ∗ gerarValorRLS ; ∗ popularLinhaRLS ; ∗ popularColunaRLS ; // menu e d i t a r QMenu ∗ m e n u E d i t a r = new QMenu( ” E d i t a r ” , t h i s ) ; r e m L o c V a l o r A c t = new QAction ( ” Remover / L o c a l i z a r R e g i s t r o s ” , t h i s ) ; s u b s t i t u a A c t = new QAction ( ” S u b s t i t u i r V a l o r e s ” , t h i s ) ; r e n o m e a r A c t = new QAction ( ” Renomear A t r i b u t o ” , t h i s ) ; c o n n e c t ( r e m L o c V a l o r A c t , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( removerIdentificarClick () ) ) ; c o n n e c t ( s u b s t i t u a A c t , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( s u b s t i t u a C l i c k ( ) ) ); c o n n e c t ( r e n o m e a r A c t , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( renomearColunaDialog ( ) ) ) ; menuEditar−>a d d A c t i o n ( r e m L o c V a l o r A c t ) ; menuEditar−>a d d A c t i o n ( s u b s t i t u a A c t ) ; menuEditar−>a d d A c t i o n ( r e n o m e a r A c t ) ; #i f n d e f TCC RODOLFO r e n o m e a r A c t−>s e t E n a b l e d ( f a l s e ) ; // Não s e pode r e n o m e a r a t r i b u t o s d o s d a d o s do p o ç o . G a r a n t i r c o n s i s t ê n c i a #e n d i f // menu r e m o v e r QMenu ∗menuRemover = new QMenu( ” Remover ” , t h i s ) ; r e m o v e r L i n h a A c t = new QAction ( ” L i n h a ” , t h i s ) ; r e m o v e r C o l u n a A c t = new QAction ( ” Coluna ” , t h i s ) ; c o n n e c t ( r e m o v e r L i n h a A c t , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( r e m o v e r L i n h a ( ) )); c o n n e c t ( r e m o v e r C o l u n a A c t , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( r e m o v e r C o l u n a () ) ) ; menuRemover−>a d d A c t i o n ( r e m o v e r L i n h a A c t ) ; menuRemover−>a d d A c t i o n ( r e m o v e r C o l u n a A c t ) ; #i f n d e f TCC RODOLFO r e m o v e r C o l u n a A c t−>s e t E n a b l e d ( f a l s e ) ; // Não s e pode r e m o v e r a t r i b u t o s d o s d a d o s do p o ç o . G a r a n t i r c o n s i s t ê n c i a #e n d i f // menu i n s e r i r QMenu ∗ m e n u I n s e r i r = new QMenu( ” I n s e r i r ” , t h i s ) ; i n s e r i r L i n h a A c t = new QAction ( ” L i n h a ” , t h i s ) ; i n s e r i r C o l u n a A c t = new QAction ( ” Coluna ” , t h i s ) ; c o n n e c t ( i n s e r i r L i n h a A c t , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( i n s e r i r L i n h a ( ) )); c o n n e c t ( i n s e r i r C o l u n a A c t , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( inserirColunaDialog () ) ) ; m e n u I n s e r i r −>a d d A c t i o n ( i n s e r i r L i n h a A c t ) ; m e n u I n s e r i r −>a d d A c t i o n ( i n s e r i r C o l u n a A c t ) ; #i f n d e f TCC RODOLFO i n s e r i r C o l u n a A c t −>s e t E n a b l e d ( f a l s e ) ; // Não s e pode i n s e r i r a t r i b u t o s n o s d a d o s do p o ç o . G a r a n t i r c o n s i s t ê n c i a #e n d i f // f e r r a m e n t a s QMenu ∗ menuFerramentas = new QMenu( ” F e r r a m e n t a s ” , t h i s ) ; g e r a r V a l o r D P = new QAction ( ” G e r a r V a l o r de uma DP” , t h i s ) ; p o p u l a r L i n h a D P = new QAction ( ” P o p u l a r l i n h a com DPs” , t h i s ) ; popularColunaDP = new QAction ( ” P o p u l a r c o l u n a com uma DP” , t h i s ) ; r e m I d e O u t l i e r s = new QAction ( ” Remover / I d e n t i f i c a r o u t l i e r s ” , t h i s ) ; g e r a r V a l o r R L S = new QAction ( ” G e r a r V a l o r de uma RLS” , t h i s ) ; p o p u l a r L i n h a R L S = new QAction ( ” P o p u l a r l i n h a com RLSs ” , t h i s ) ; p o p u l a r C o l u n a R L S = new QAction ( ” P o p u l a r c o l u n a com uma RLS” , t h i s ) ; c o n n e c t ( g e r a r V a l o r D P , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( 287 gerarValorDPDialog ( ) ) ) ; c o n n e c t ( popularLinhaDP , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( gerarLinhaDPDialog ( ) ) ) ; c o n n e c t ( popularColunaDP , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( gerarColunaDPDialog ( ) ) ) ; c o n n e c t ( r e m I d e O u t l i e r s , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( remIdeOutliersDialog () ) ) ; c o n n e c t ( g e r a r V a l o r R L S , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( gerarValorRLSDialog ( ) ) ) ; c o n n e c t ( p o p u l a r L i n h a R L S , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( gerarLinhaRLSDialog ( ) ) ) ; c o n n e c t ( popularColunaRLS , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( gerarColunaRLSDialog ( ) ) ) ; menuFerramentas−>a d d A c t i o n ( g e r a r V a l o r D P ) ; menuFerramentas−>a d d A c t i o n ( p o p u l a r L i n h a D P ) ; menuFerramentas−>a d d A c t i o n ( popularColunaDP ) ; menuFerramentas−>a d d A c t i o n ( r e m I d e O u t l i e r s ) ; menuFerramentas−>a d d A c t i o n ( g e r a r V a l o r R L S ) ; menuFerramentas−>a d d A c t i o n ( p o p u l a r L i n h a R L S ) ; menuFerramentas−>a d d A c t i o n ( p o p u l a r C o l u n a R L S ) ; 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 m o s t r a r T o d o s A c t = new QAction ( ” M o s t r a r Todos o s R e g i s t r o s ” , t h i s ) ; c o n n e c t ( m o s t r a r T o d o s A c t , SIGNAL ( t r i g g e r e d ( ) ) , t h i s , SLOT( m o s t r a r T o d o s ( ) )); // menu p r i n c i p a l menu = new QMenuBar ( t h i s ) ; menu−>r e s i z e ( t h i s −>w i d t h ( ) , menu−>h e i g h t ( ) ) ; // menu−>addMenu ( menuExportar ) ; menu−>addMenu ( m e n u E d i t a r ) ; menu−>addMenu ( menuRemover ) ; menu−>addMenu ( m e n u I n s e r i r ) ; menu−>addMenu ( menuFerramentas ) ; menu−>a d d A c t i o n ( m o s t r a r T o d o s A c t ) ; } void { void { 190 191 192 193 habilitado ) const WidgetTabelaEditora : : r e m o v e r I d e n t i f i c a r C l i c k ( ) removerComboBox ( ) ; c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; } c o n s t s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; 173 174 175 188 189 bool } 171 172 176 177 178 179 180 181 182 183 184 185 186 187 WidgetTabelaEditora : : h a b i l i t a r E v e n t o s ( const menu−>s e t E n a b l e d ( h a b i l i t a d o ) ; u i . t a b l e V i e w E d i c a o −>s e t E n a b l e d ( h a b i l i t a d o ) ; if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o ) ) removerIdentificarQualitativaDialog ( atributo ) ; } else { removerIdentificarQuantitativoDialog ( atributo ) ; } } void WidgetTabelaEditora : : r e m o v e r I d e n t i f i c a r Q u a l i t a t i v a D i a l o g ( const &a t r i b u t o S e l e c i o n a d o ) string { D i a l o g R e m I d e Q u a l i ∗ d i a l o g R e m I d e Q u a l i = new D i a l o g R e m I d e Q u a l i ( atributoSelecionado , this ) ; c o n n e c t ( d i a l o g R e m I d e Q u a l i , SIGNAL ( r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g &, c o n s t bool , c o n s t b o o l ) ) ) ; c o n n e c t ( d i a l o g R e m I d e Q u a l i , SIGNAL ( i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) ) ; d i a l o g R e m I d e Q u a l i −>e x e c ( ) ; 288 194 195 196 197 198 199 delete void const 203 204 205 C o l e t o r E s t a t i s t i c a s : : E s t a t i s t i c a Q u a n t &e s t a t i s t i c a Q u a n t i t a t i v o = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> estatisticaAtributoQuantitativo ( atributoSelecionado ) ; d i a l o g R e m I d e Q u a n t−>e x e c ( ) ; d e l e t e dialogRemIdeQuant ; } void { WidgetTabelaEditora : : remIdeOutliersDialog ( ) c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; } c o n s t s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; 215 216 217 218 219 220 221 D i a l o g R e m I d e O u t l i e r s ∗ d i a l o g R e m I d e O u t l i e r s = new D i a l o g R e m I d e O u t l i e r s ( atributo , this ) ; c o n n e c t ( d i a l o g R e m I d e O u t l i e r s , SIGNAL ( r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) ) ; c o n n e c t ( d i a l o g R e m I d e O u t l i e r s , SIGNAL ( i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) ) ; 222 223 238 239 240 241 242 243 244 string DialogRemIdeQuant ∗ d i a l o g R e m I d e Q u a n t = new DialogRemIdeQuant ( a t r i b u t o S e l e c i o n a d o , e s t a t i s t i c a Q u a n t i t a t i v o . maximo , e s t a t i s t i c a Q u a n t i t a t i v o . minimo , t h i s ) ; c o n n e c t ( d i a l o g R e m I d e Q u a n t , SIGNAL ( r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g &, c o n s t bool , c o n s t b o o l ) ) ) ; c o n n e c t ( d i a l o g R e m I d e Q u a n t , SIGNAL ( r e m o v e r R e g i s t r o s Q u a n t P o r I n t e r v a l o ( c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( r e m o v e r R e g i s t r o s Q u a n t P o r I n t e r v a l o ( c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t s t r i n g & , c o n s t bool , const bool ) ) ) ; c o n n e c t ( d i a l o g R e m I d e Q u a n t , SIGNAL ( i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) ) ; c o n n e c t ( d i a l o g R e m I d e Q u a n t , SIGNAL ( i d e n t i f i c a r R e g i s t r o s Q u a n t P o r I n t e r v a l o ( c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( identificarRegistrosQuantPorIntervalo ( const vector< T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t s t r i n g & , c o n s t b o o l , c o n s t bool ) ) ) ; 202 224 225 226 227 228 229 230 231 232 233 234 235 236 237 WidgetTabelaEditora : : r e m o v e r I d e n t i f i c a r Q u a n t i t a t i v o D i a l o g ( const &a t r i b u t o S e l e c i o n a d o ) { 200 201 206 207 208 209 210 211 212 213 214 dialogRemIdeQuali ; } d i a l o g R e m I d e O u t l i e r s −>e x e c ( ) ; delete dialogRemIdeOutliers ; } void WidgetTabelaEditora : : removerRegistrosPorValor ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t > &v a l o r e s , c o n s t s t r i n g &a t r i b u t o , c o n s t b o o l missingsTmb , const bool invalidosTmb ) { v e c t o r <s i z e t > r e g i s t r o s R e m o v i d o s = v e c t o r <s i z e t >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e m o v a R e g i s t r o s P o r V a l o r e s ( a t r i b u t o , v a l o r e s , missingsTmb , i n v a l i d o s T m b , r e g i s t r o s R e m o v i d o s ) ; aposRemoverRegistro ( registrosRemovidos ) ; } void WidgetTabelaEditora : : removerRegistrosQuantPorIntervalo ( c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , c o n s t s t r i n g &a t r i b u t o , 289 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 const const v e c t o r <s i z e t > r e g i s t r o s R e m o v i d o s = v e c t o r <s i z e t >() ; aposRemoverRegistro ( registrosRemovidos ) ; } void 307 308 309 310 311 312 313 314 WidgetTabelaEditora : : i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t > &v a l o r e s , c o n s t s t r i n g &a t r i b u t o , c o n s t b o o l missingsTmb , const bool invalidosTmb ) const { v e c t o r <s i z e t > r e g i s t r o s I d e n t i f i c a d o s = v e c t o r <s i z e t >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( a t r i b u t o , v a l o r e s , missingsTmb , i n v a l i d o s T m b , registrosIdentificados ) ; aposIdentificarRegistro ( registrosIdentificados ) ; } void WidgetTabelaEditora : : i d e n t i f i c a r R e g i s t r o s Q u a n t P o r I n t e r v a l o ( c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , c o n s t s t r i n g &a t r i b u t o , c o n s t b o o l missingsTmb , const bool invalidosTmb ) const { v e c t o r <s i z e t > r e g i s t r o s I d e n t i f i c a d o s = v e c t o r <s i z e t >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> identificarRegistrosQuantPorIntervalo ( atributo , intervalos , missingsTmb , i n v a l i d o s T m b , r e g i s t r o s I d e n t i f i c a d o s ) ; aposIdentificarRegistro ( registrosIdentificados ) ; } void { WidgetTabelaEditora : : s u b s t i t u a C l i c k ( ) removerComboBox ( ) ; c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; } c o n s t s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; 289 290 291 304 305 306 missingsTmb , invalidosTmb ) T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e m o v e r R e g i s t r o s Q u a n t P o r I n t e r v a l o ( i n t e r v a l o s , a t r i b u t o , missingsTmb , i n v a l i d o s T m b , registrosRemovidos ) ; 287 288 292 293 294 295 296 297 298 299 300 301 302 303 bool bool { if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o ) ) substituaQualitativoDialog ( atributo ) ; } else { substituaQuantitativoDialog ( atributo ) ; } } void WidgetTabelaEditora : : s u b s t i t u a Q u a l i t a t i v o D i a l o g ( const atributoSelecionado ) string & { v e c t o r <s t r i n g > c a t e g o r i a s A t r i b u t o Q u a l i t a t i v o = v e c t o r <s t r i n g >() ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o d a s C a t e g o r i a s A t r i b u t o Q u a l ( atributoSelecionado , categoriasAtributoQualitativo ) ; const v e c t o r <s t r i n g > &a t r i b u t o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ; bool algumAtributoComValorDestacado = f a l s e ; for ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . c b e g i n ( ) ; c i t A t r i b u t o != a t r i b u t o s . c e n d ( ) ; c i t A t r i b u t o ++) 290 { 315 316 317 318 319 320 321 322 323 c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; i f ( r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o [ a t r i b u t o ] . s i z e ( ) > 0) { algumAtributoComValorDestacado = t r u e ; } } D i a l o g S u b s t Q u a l ∗ d i a l o g S u b s t Q u a l = new D i a l o g S u b s t Q u a l ( c a t e g o r i a s A t r i b u t o Q u a l i t a t i v o , a t r i b u t o S e l e c i o n a d o , t h i s ) ; // deletado abaixo d i a l o g S u b s t Q u a l −>s o m e n t e D e s t a c a d o s ( a l g u m A t r i b u t o C o m V a l o r D e s t a c a d o ) ; 324 325 326 327 c o n n e c t ( d i a l o g S u b s t Q u a l , SIGNAL ( s u b s t i t u a M i s s i n g s ( c o n s t s t r i n g & , V a l o r B a s e ∗ c o n s t ) ) , t h i s , SLOT( s u b s t i t u a M i s s i n g s ( c o n s t s t r i n g & , ValorBase ∗ const ) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a l , SIGNAL ( s u b s t i t u a T o d o s ( c o n s t s t r i n g & , V a l o r B a s e ∗ c o n s t ) ) , t h i s , SLOT( s u b s t i t u a T o d o s ( c o n s t s t r i n g & , V a l o r B a s e ∗ const ) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a l , SIGNAL ( s u b s t i t u a D e s t a c a d o s ( c o n s t s t r i n g & , V a l o r B a s e ∗ c o n s t ) ) , t h i s , SLOT( s u b s t i t u a D e s t a c a d o s ( c o n s t s t r i n g & , ValorBase ∗ const ) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a l , SIGNAL ( s u b s t i t u a L o c a l i z a d o s ( c o n s t s t r i n g & , c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, V a l o r B a s e ∗ c o n s t , c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( s u b s t i t u a L o c a l i z a d o s ( c o n s t s t r i n g & , c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t >&, V a l o r B a s e ∗ c o n s t , c o n s t b o o l , c o n s t bool ) ) ) ; 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 d i a l o g S u b s t Q u a l −>e x e c ( ) ; delete dialogSubstQual ; } void WidgetTabelaEditora : : s u b s t i t u a Q u a n t i t a t i v o D i a l o g ( const atributoSelecionado ) string & { const const v e c t o r <s t r i n g > &a t r i b u t o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ; v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; v e c t o r <v e c t o r <s i z e t >> r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r = v e c t o r < v e c t o r <s i z e t >>() ; v e c t o r <v e c t o r <s i z e t >> i n d i c e s V a l i d o s P o r A t r i b u t o = v e c t o r <v e c t o r <s i z e t >>() ; bool for algumAtributoComValorDestacado = f a l s e ; ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . c b e g i n ( ) ; c i t A t r i b u t o != a t r i b u t o s . c e n d ( ) ; c i t A t r i b u t o ++) { c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r . push back ( registrosDestacadosPorAtributo [ atributo ]) ; if { ( r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o [ a t r i b u t o ] . s i z e ( ) > 0) algumAtributoComValorDestacado = t r u e ; } } T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosDestacadosPorAtributoVetor , indicesValidosPorAtributo ) ; D i a l o g S u b s t Q u a n t ∗ d i a l o g S u b s t Q u a n t = new D i a l o g S u b s t Q u a n t ( atributoSelecionado , atributosQuant , indicesValidosPorAtributo , this ) ; d i a l o g S u b s t Q u a n t −>s o m e n t e D e s t a c a d o s ( a l g u m A t r i b u t o C o m V a l o r D e s t a c a d o ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a M i s s i n g s ( c o n s t s t r i n g & , V a l o r B a s e ∗ c o n s t ) ) , t h i s , SLOT( s u b s t i t u a M i s s i n g s ( c o n s t s t r i n g & , ValorBase ∗ const ) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a T o d o s ( c o n s t s t r i n g & , V a l o r B a s e ∗ c o n s t ) ) , t h i s , SLOT( s u b s t i t u a T o d o s ( c o n s t s t r i n g & , ValorBase ∗ const ) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a I n v a l i d o s ( c o n s t s t r i n g & , V a l o r B a s e ∗ c o n s t ) ) , t h i s , SLOT( s u b s t i t u a I n v a l i d o s ( c o n s t s t r i n g & , ValorBase ∗ const ) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a I n t e r v a l o s ( c o n s t s t r i n g & , V a l o r B a s e ∗ c o n s t , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t b o o l . c o n s t b o o l ) ) , t h i s , SLOT( s u b s t i t u a I n t e r v a l o s ( c o n s t 291 s t r i n g & , V a l o r B a s e ∗ c o n s t , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t b o o l . c o n s t b o o l ) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a D e s t a c a d o s ( c o n s t s t r i n g & , V a l o r B a s e ∗ c o n s t ) ) , t h i s , SLOT( s u b s t i t u a D e s t a c a d o s ( c o n s t s t r i n g & , ValorBase ∗ const ) ) ) ; 368 369 370 c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a M i s s i n g s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ) , t h i s , SLOT( s u b s t i t u a M i s s i n g s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a T o d o s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ) , t h i s , SLOT( s u b s t i t u a T o d o s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a I n v a l i d o s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ) , t h i s , SLOT( s u b s t i t u a I n v a l i d o s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a I n t e r v a l o D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o & , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( s u b s t i t u a I n t e r v a l o D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o & , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t b o o l , c o n s t b o o l ) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a D e s t a c a d o s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ) , t h i s , SLOT( s u b s t i t u a D e s t a c a d o s D P ( c o n s t s t r i n g & , c o n s t D i s t r i b u i c a o &) ) ) ; 371 372 373 374 375 376 c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a M i s s i n g s R L S ( c o n s t s t r i n g & , c o n s t s t r i n g & , c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ) , t h i s , SLOT( s u b s t i t u a M i s s i n g s R L S ( c o n s t s t r i n g &, c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a T o d o s R L S ( c o n s t s t r i n g & , c o n s t s t r i n g & , c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ) , t h i s , SLOT( substituaTodosRLS ( c o n s t s t r i n g &, c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a I n v a l i d o s R L S ( c o n s t s t r i n g & , c o n s t s t r i n g & , c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ) , t h i s , SLOT( s u b s t i t u a I n v a l i d o s R L S ( c o n s t s t r i n g &, c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a I n t e r v a l o R L S ( c o n s t s t r i n g & , c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s &, c o n s t v e c t o r < T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t b o o l , c o n s t b o o l ) ) , t h i s , SLOT( s u b s t i t u a I n t e r v a l o R L S ( c o n s t s t r i n g & , c o n s t s t r i n g & , c o n s t R e g r e s s a o L i n e a r S i m p l e s & , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o >&, c o n s t b o o l , c o n s t b o o l ) ) ) ; c o n n e c t ( d i a l o g S u b s t Q u a n t , SIGNAL ( s u b s t i t u a D e s t a c a d o s R L S ( c o n s t s t r i n g & , c o n s t s t r i n g & , c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ) , t h i s , SLOT( s u b s t i t u a D e s t a c a d o s R L S ( c o n s t s t r i n g &, c o n s t s t r i n g &, c o n s t R e g r e s s a o L i n e a r S i m p l e s &) ) ) ; 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 d i a l o g S u b s t Q u a n t −>e x e c ( ) ; d e l e t e dialogSubstQuant ; } void WidgetTabelaEditora : : s u b s t i t u a M i s s i n g s ( const ValorBase ∗ const novoValor ) s t r i n g &a t r i b u t o , { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a M i s s i n g s ( a t r i b u t o , novoValor ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void WidgetTabelaEditora : : substituaTodos ( const ∗ const novoValor ) s t r i n g &a t r i b u t o , ValorBase { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a T o d o s ( a t r i b u t o , ); novoValor v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void WidgetTabelaEditora : : s u b s t i t u a I n v a l i d o s ( const ValorBase ∗ const novoValor ) s t r i n g &a t r i b u t o , 292 412 413 414 415 { if { QMessageBox : : w a r n i n g (NULL, fromLatin1 ( ” S u b t i t u i r quantitativos ! ”) ) ; return ; 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 QString : : fromLatin1 ( ” Aviso ” ) , QString : : i n v á l i d o s s ó s e a p l i c a p a r a a t r i b u t o s } T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a I n v a l i d o s ( a t r i b u t o , novoValor ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void WidgetTabelaEditora : : substituaDestacados ( const ValorBase ∗ const novoValor ) s t r i n g &a t r i b u t o , { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a T o d o s P o r I n d i c e ( a t r i b u t o , novoValor , registrosDestacadosPorAtributo [ atributo ]) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void W i d g e t T a b e l a E d i t o r a : : s u b s t i t u a I n t e r v a l o s ( c o n s t s t r i n g &a t r i b u t o , V a l o r B a s e ∗ c o n s t n o v o V a l o r , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , c o n s t b o o l missingsTmb , c o n s t b o o l i n v a l i d o s T m b ) { if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o ) ) QMessageBox : : w a r n i n g (NULL, fromLatin1 ( ” S u b t i t u i r quantitativos ! ”) ) ; return ; 446 447 448 449 450 451 452 453 454 455 456 457 458 459 ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o ) ) QString : : fromLatin1 ( ” Aviso ” ) , QString : : i n v á l i d o s s ó s e a p l i c a p a r a a t r i b u t o s } T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a I n t e r v a l o s ( a t r i b u t o , n o v o V a l o r , i n t e r v a l o s , missingsTmb , i n v a l i d o s T m b ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void WidgetTabelaEditora : : substituaMissingsDP ( const D i s t r i b u i c a o &d i s t r i b u i c a o ) s t r i n g &a t r i b u t o , const { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a M i s s i n g s D P P o r I n d i c e ( indicesTodosRegistros , distribuicao ) ; atributo , v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void WidgetTabelaEditora : : substituaTodosDP ( c o n s t D i s t r i b u i c a o &d i s t r i b u i c a o ) s t r i n g &a t r i b u t o , const { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a T o d o s D P P o r I n d i c e ( a t r i b u t o , indicesTodosRegistros , distribuicao ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; 293 480 481 482 483 484 485 486 487 repopularColunas ( atributos ) ; } void if { 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 QString : : fromLatin1 ( ” Aviso ” ) , QString : : i n v á l i d o s s ó s e a p l i c a p a r a a t r i b u t o s } T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a I n v a l i d o s D P P o r I n d i c e ( atributo , indicesTodosRegistros , distribuicao ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void WidgetTabelaEditora : : substituaIntervaloDP ( c o n s t s t r i n g &a t r i b u t o , c o n s t D i s t r i b u i c a o &d i s t r i b u i c a o , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , c o n s t b o o l missingsTmb , const bool invalidosTmb ) { if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o ) ) QMessageBox : : w a r n i n g (NULL, fromLatin1 ( ” S u b t i t u i r quantitativos ! ”) ) ; return ; 511 512 513 514 515 516 517 518 519 520 521 522 523 524 s t r i n g &a t r i b u t o , ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o ) ) QMessageBox : : w a r n i n g (NULL, fromLatin1 ( ” S u b t i t u i r quantitativos ! ”) ) ; return ; 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 WidgetTabelaEditora : : substituaInvalidosDP ( const c o n s t D i s t r i b u i c a o &d i s t r i b u i c a o ) { QString : : fromLatin1 ( ” Aviso ” ) , QString : : i n v á l i d o s s ó s e a p l i c a p a r a a t r i b u t o s } T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a I n t e r v a l o s D P P o r I n d i c e ( atributo , indicesTodosRegistros , distribuicao , intervalos , missingsTmb , i n v a l i d o s T m b ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void WidgetTabelaEditora : : substituaDestacadosDP ( const c o n s t D i s t r i b u i c a o &d i s t r i b u i c a o ) s t r i n g &a t r i b u t o , { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a T o d o s D P P o r I n d i c e ( a t r i b u t o registrosDestacadosPorAtributo [ atributo ] , distribuicao ) ; , v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void W i d g e t T a b e l a E d i t o r a : : s u b s t i t u a M i s s i n g s R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g &a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o ) { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a M i s s i n g s R L S P o r I n d i c e ( atributoInd , atributoDep , indicesTodosRegistros , regressao ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( atributoDep ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void W i d g e t T a b e l a E d i t o r a : : s u b s t i t u a T o d o s R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g &a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o ) 294 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a T o d o s R L S P o r I n d i c e ( atributoInd , atributoDep , indicesTodosRegistros , regressao ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( atributoDep ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void W i d g e t T a b e l a E d i t o r a : : s u b s t i t u a I n v a l i d o s R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g &a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o ) { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a I n v a l i d o s R L S P o r I n d i c e ( atributoInd , atributoDep , indicesTodosRegistros , regressao ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( atributoDep ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void WidgetTabelaEditora : : substituaIntervaloRLS ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g &a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , c o n s t b o o l missingsTmb , const bool invalidosTmb ) { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a I n t e r v a l o s R L S P o r I n d i c e ( atributoInd , atributoDep , indicesTodosRegistros , regressao , i n t e r v a l o s , missingsTmb , i n v a l i d o s T m b ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( atributoDep ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void W i d g e t T a b e l a E d i t o r a : : s u b s t i t u a D e s t a c a d o s R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g &a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o ) { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a T o d o s R L S P o r I n d i c e ( atributoInd , atributoDep , registrosDestacadosPorAtributo [ atributoDep ] , r e g r e s s a o ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( atributoDep ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void WidgetTabelaEditora : : s u b s t i t u a L o c a l i z a d o s ( c o n s t s t r i n g &a t r i b u t o , c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t > &a n t i g o s V a l o r e s , ValorBase ∗ c o n s t novoValor , c o n s t b o o l missingsTmb , const bool invalidosTmb ) { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>s u b s t i t u a L o c a l i z a d o s P o r I n d i c e ( i n d i c e s T o d o s R e g i s t r o s , a n t i g o s V a l o r e s , novoValor , atributo , missingsTmb , i n v a l i d o s T m b ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } 295 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 void { W i d g e t T a b e l a E d i t o r a : : removerComboBox ( ) if { ( comboBox ) removerComboBox ( comboBox−>c u r r e n t T e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ) ; } } void { Widget TabelaEd itora : : itemComboClick ( QString } void { W i d g e t T a b e l a E d i t o r a : : removerComboBox ( c o n s t c o n s t s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( i n d i c e C o m b o −>row ( ) , 0 )−>t e x t ( ) . t o L a t i n 1 ( ) . t o I n t ( ) ; c o n s t s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o m b o −>column ( ) , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; 640 641 if ( comboBox != NULL && ”+” comboBox−>c u r r e n t I n d e x ( ) == 0 ) // n o v o V a l o r == { 642 643 644 645 646 647 u i . t a b l e V i e w E d i c a o −>e d i t ( ∗ i n d i c e C o m b o ) ; } else { c o n s t s t r i n g v a l o r A n t i g o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( i n d i c e C o m b o −>row ( ) , i n d i c e C o m b o−>column ( ) )−>t e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; 648 649 650 651 652 if { ( valorAntigo != novoValorStr ) t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( t r u e ) ; t a b l e V i e w E d i c a o M o d e l −>i t e m ( ( ∗ i n d i c e C o m b o ) . row ( ) , ( ∗ i n d i c e C o m b o ) . column ( ) )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( novoValorStr . c s t r () ) ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( f a l s e ) ; 653 654 655 V a l o r B a s e ∗ n o v o V a l o r = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> gerarValor ( atributo , novoValorStr ) ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t u a l i z e R e g i s t r o ( i n d i c e R e g i s t r o , a t r i b u t o , novoValor ) ; d e l e t e novoValor ; 656 689 690 691 692 s t r i n g &n o v o V a l o r S t r ) u i . t a b l e V i e w E d i c a o −>s e t I n d e x W i d g e t ( ∗ i n d i c e C o m b o , NULL) ; 639 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 textoSelecionado ) removerComboBox ( t e x t o S e l e c i o n a d o . t o L a t i n 1 ( ) . d a t a ( ) ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; } } comboBox ; delete comboBox = NULL ; delete indiceCombo ; i n d i c e C o m b o = NULL ; } void { WidgetTabelaEditora : : c e l u l a C l i c k ( const if { ( i n d i c e . row ( ) == QModelIndex &i n d i c e ) l i n h a C l i c k && i n d i c e . column ( ) == colunaClick ) return ; } l i n h a C l i c k = i n d i c e . row ( ) ; c o l u n a C l i c k = i n d i c e . column ( ) ; removerComboBox ( ) ; } void { WidgetTabelaEditora : : c e l u l a C l i c k D u p l o ( const const if { QModelIndex &i n d i c e ) s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e . column ( ) , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o ) ) const s t r i n g v a l o r A n t e r i o r = u i . t a b l e V i e w E d i c a o −>model ( )−>d a t a ( i n d i c e ) . t o S t r i n g ( ) . toL ati n1 ( ) . data ( ) ; 296 693 694 695 comboBox = new QComboBox ( ) ; i n d i c e C o m b o = new QModelIndex ( i n d i c e ) ; // d e l e t a d o em ˜ W i d g e t T a b e l a E d i t o r a e removerComboBox 696 697 698 699 v e c t o r <s t r i n g > c a t e g o r i a s A t r i b u t o Q u a l i t a t i v o = v e c t o r <s t r i n g >() ; c a t e g o r i a s A t r i b u t o Q u a l i t a t i v o . p u s h b a c k ( ”+” ) ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o d a s C a t e g o r i a s A t r i b u t o Q u a l ( atributo , categoriasAtributoQualitativo ) ; 700 701 P o p u l a d o r : : populeComboBox ( comboBox , ; 702 703 comboBox−>s e t C u r r e n t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( v a l o r A n t e r i o r . c s t r ( ) )); 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 categoriasAtributoQualitativo ) u i . t a b l e V i e w E d i c a o −>s e t I n d e x W i d g e t ( ∗ i n d i c e C o m b o , c o n n e c t ( comboBox , SIGNAL ( a c t i v a t e d ( Q S t r i n g ) ) , itemComboClick ( QString ) ) ) ; comboBox ) ; t h i s , SLOT( } } W i d g e t T a b e l a E d i t o r a : : c e l u l a A l t e r a d a ( QStandardItem ∗ item ) void { const const int int l i n h a I n d i c e = i t e m−>i n d e x ( ) . row ( ) ; c o l u n a I n d i c e = i t e m−>i n d e x ( ) . column ( ) ; s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a I n d i c e , 0 )−>t e x t ( ) . t o L a t i n 1 ( ) . t o I n t ( ) ; s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( c o l u n a I n d i c e , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; c o n s t s i z e t i n d i c e A t r i b u t o = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributo ) ; const const const string n o v o V a l o r S t r = i t e m−>t e x t ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; b o o l ok = f a l s e ; ValorBase ∗ novoValor ; double novoValorDbl ; if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>ehQuant ( a t r i b u t o ) ) novoValorDbl = U t i l i d a d e s : : stdStrToDbl ( novoValorStr , ok ) ; 729 730 731 732 if { true , true , & ( ! ok ) QMessageBox m s g Q u e s t i o n ( QMessageBox : : Q u e s t i o n , ” A v i s o ” , Q S t r i n g : : f r o m L a t i n 1 ( ”O v a l o r i n s e r i d o não é q u a n t i t a t i v o . Ex . : \ ” 1 , 5 7 \ ” , \ ” 1 0 0 0 0 , 5 7 \ ” , \ ” 1 0 0 \ ” . \ n D e s e j a e d i t a r mesmo a s s i m ? ” ) , QMessageBox : : Yes | QMessageBox : : No , t h i s ) ; m s g Q u e s t i o n . b u t t o n ( QMessageBox : : Yes )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ” Sim ” ) ) ; m s g Q u e s t i o n . b u t t o n ( QMessageBox : : No )−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( ”Não” ) ) ; 733 734 735 736 737 738 if { ( QMessageBox : : No == m s g Q u e s t i o n . e x e c ( ) ) const 739 const 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 } 757 } R e g i s t r o &r = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> registro ( indiceRegistro ) ; string valorAntigoStr = r . retorneValor ( indiceAtributo )−>v a l o r S t r ( ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( t r u e ) ; i t e m−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( v a l o r A n t i g o S t r . c s t r ( ) ) ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( f a l s e ) ; return ; } } if { ( ok ) novoValor = TabelaDeRegistros : : gerarValorQuant ( novoValorDbl ) ; } else { n o v o V a l o r = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>g e r a r V a l o r ( atributo , novoValorStr ) ; 297 758 759 // e s s a s t r e s l i n h a s é p r a s e t a r c e l u l a com o que o u s u a r i o d i g i t o u , de f o r m a p a d r o n i z a d a t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( t r u e ) ; i t e m−>s e t T e x t ( Q S t r i n g : : f r o m L a t i n 1 ( n o v o V a l o r−>v a l o r S t r ( ) . c s t r ( ) ) ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( f a l s e ) ; 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t u a l i z e R e g i s t r o ( i n d i c e R e g i s t r o , a t r i b u t o , novoValor ) ; d e l e t e novoValor ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; } void { if { } c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; } 787 788 789 790 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l A t r i b u t o s ( ) <= 1 ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Não é p o s sı́ v e l r e m o v e r o ú l t i m o a t r i b u t o ! ” ) ) ; return ; 785 786 805 806 807 808 809 810 811 812 WidgetTabelaEditora : : removerColuna ( ) mostrarTodos ( ) ; 780 781 782 783 784 791 792 793 794 795 796 797 798 799 800 801 802 803 804 mas const s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e m o v e r A t r i b u t o ( a t r i b u t o ) ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>r e m o v e r A t r i b u t o ( a t r i b u t o ) ; t a b l e V i e w E d i c a o M o d e l −>removeColumn ( i n d i c e C o l u n a ) ; } void { WidgetTabelaEditora : : removerLinha ( co n st bool removerRegistro ) removerComboBox ( ) ; if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l R e g i s t r o s ( ) == 1 ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Não é p o s sı́ v e l r e m o v e r o ú l t i m o r e g i s t r o ! ” ) ) ; return ; } const if { int l i n h a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . row ( ) ; ( l i n h a == −1) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ” S e l e c i o n e uma l i n h a ! ” ) ) ; return ; QString : : } const if { s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , text () . toLatin1 () . toInt () ; 0 )−> ( removerRegistro ) T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e m o v a R e g i s t r o ( i n d i c e R e g i s t r o ) ; } t a b l e V i e w E d i c a o M o d e l −>removeRow ( l i n h a ) ; t o t a l L i n h a s −−; v e c t o r <s i z e t > : : c o n s t i t e r a t o r c i t = s t d : : f i n d ( i n d i c e s T o d o s R e g i s t r o s . cbegin () , i n d i c e s T o d o s R e g i s t r o s . cend ( ) , i n d i c e R e g i s t r o ) ; i f ( c i t != i n d i c e s T o d o s R e g i s t r o s . cend ( ) ) { 298 829 830 831 832 indicesTodosRegistros . erase ( cit ) ; } a t u a l i z e E s t a t i s t i c a C o l u n a ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ) ; 833 834 835 } 836 837 838 839 840 841 842 843 844 { 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 void W i d g e t T a b e l a E d i t o r a : : r e m o v e r L i n h a s ( c o n s t v e c t o r <s i z e t > & indiceRegistros , const bool removerRegistro ) if { ( i n d i c e R e g i s t r o s . empty ( ) ) return ; } const totalLinhasRemover = i n d i c e R e g i s t r o s . s i z e ( ) ; const i n t t a x a N o t i f i c a c a o = t o t a l L i n h a s R e m o v e r <= 10 ? 10 totalLinhasRemover / 10; s i z e t i = 0; : mostrarTodos ( ) ; u i . t a b l e V i e w E d i c a o −>b l o c k S i g n a l s ( t r u e ) ; u i . t a b l e V i e w E d i c a o −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( t r u e ) ; // i n v e r t i d o p a r a nao a f e t a r o i n d i c e f o r ( i n t l i n h a = t a b l e V i e w E d i c a o M o d e l −>rowCount ( ) − 1 ; l i n h a >= 0 ; l i n h a −−) { c o n s t s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , −>t e x t ( ) . t o L a t i n 1 ( ) . t o I n t ( ) ; 865 866 if 0) ( s t d : : f i n d ( i n d i c e R e g i s t r o s . b e g i n ( ) , i n d i c e R e g i s t r o s . end ( ) , i n d i c e R e g i s t r o ) != i n d i c e R e g i s t r o s . end ( ) ) { 867 868 869 870 871 872 873 t a b l e V i e w E d i c a o M o d e l −>removeRow ( l i n h a ) ; t o t a l L i n h a s −−; if { ( removerRegistro ) T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e m o v a R e g i s t r o ( indiceRegistro ) ; } 874 875 876 v e c t o r <s i z e t > : : c o n s t i t e r a t o r c i t = s t d : : f i n d ( indicesTodosRegistros . cbegin () , indicesTodosRegistros . cend ( ) , i n d i c e R e g i s t r o ) ; i f ( c i t != i n d i c e s T o d o s R e g i s t r o s . cend ( ) ) { indicesTodosRegistros . erase ( cit ) ; } 877 878 879 880 881 882 883 884 885 i ++; i f ( ( i % t a x a N o t i f i c a c a o ) == 0 ) { p r o g r e s s −>s e t V a l u e ( min ( ( i n t ) ( i ∗ 1 . 0 / t o t a l L i n h a s R e m o v e r ∗ 100) , 99) ) ; Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : ExcludeUserInputEvents ) ; } 886 887 888 889 890 891 892 893 894 895 896 size t Q P r o g r e s s D i a l o g ∗ p r o g r e s s = new Q P r o g r e s s D i a l o g ( Q S t r i n g : : f r o m L a t i n 1 ( ” Removendo l i n h a s . . . ” ) , ” ” , 0 , 1 0 0 , t h i s ) ; p r o g r e s s −>s e t W i n d o w T i t l e ( Q S t r i n g : : f r o m L a t i n 1 ( ” Aguarde ” ) ) ; p r o g r e s s −>s e t W i n d o w M o d a l i t y ( Qt : : A p p l i c a t i o n M o d a l ) ; p r o g r e s s −>s e t W i n d o w F l a g s ( p r o g r e s s −>w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint & ˜Qt : : W i n d o w C l o s e B u t t o n H i n t | Qt : : MSWindowsFixedSizeDialogHint ) ; p r o g r e s s −>s e t C a n c e l B u t t o n (NULL) ; p r o g r e s s −>s e t V a l u e ( 0 ) ; p r o g r e s s −>show ( ) ; } } t a b l e V i e w E d i c a o M o d e l −>setRowCount ( totalLinhas ) ; u i . t a b l e V i e w E d i c a o −>b l o c k S i g n a l s ( f a l s e ) ; u i . t a b l e V i e w E d i c a o −>s e t U p d a t e s E n a b l e d ( t r u e ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( f a l s e ) ; emit t a b l e V i e w E d i c a o M o d e l −>l a y o u t C h a n g e d ( ) ; 299 897 898 899 900 delete 901 902 903 } 904 905 906 { void 909 910 911 912 const 913 914 915 916 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 WidgetTabelaEditora : : removerLinhasDestacadasDoAtributo ( const removerRegistro ) bool c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; } 907 908 917 918 919 920 921 922 923 924 925 926 927 progress ; a t u a l i z e E s t a t i s t i c a C o l u n a ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ) ; if { s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; ( r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o [ a t r i b u t o ] . s i z e ( ) <= 0 ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ”Não há v a l o r e s d e s t a c a d o s na c o l u n a ” ) ) ; return ; QString : : } removerLinhas ( r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o [ a t r i b u t o ] ) ; } void { WidgetTabelaEditora : : removerTodasLinhas ( ) const size t totalLinhasRemover = t a b l e V i e w E d i c a o M o d e l −>rowCount ( ) ; Q P r o g r e s s D i a l o g ∗ p r o g r e s s = new Q P r o g r e s s D i a l o g ( Q S t r i n g : : f r o m L a t i n 1 ( ” Removendo l i n h a s . . . ” ) , ” ” , 0 , 1 0 0 , t h i s ) ; p r o g r e s s −>s e t W i n d o w T i t l e ( Q S t r i n g : : f r o m L a t i n 1 ( ” Aguarde ” ) ) ; p r o g r e s s −>s e t W i n d o w M o d a l i t y ( Qt : : A p p l i c a t i o n M o d a l ) ; p r o g r e s s −>s e t W i n d o w F l a g s ( p r o g r e s s −>w i n d o w F l a g s ( ) & ˜Qt : : WindowContextHelpButtonHint & ˜Qt : : W i n d o w C l o s e B u t t o n H i n t | Qt : : MSWindowsFixedSizeDialogHint ) ; p r o g r e s s −>s e t C a n c e l B u t t o n (NULL) ; p r o g r e s s −>s e t V a l u e ( 0 ) ; p r o g r e s s −>show ( ) ; const i n t t a x a N o t i f i c a c a o = t o t a l L i n h a s R e m o v e r <= 10 ? 10 totalLinhasRemover / 10; s i z e t i = 0; : removerComboBox ( ) ; u i . t a b l e V i e w E d i c a o −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; u i . t a b l e V i e w E d i c a o −>b l o c k S i g n a l s ( t r u e ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( t r u e ) ; while ( t a b l e V i e w E d i c a o M o d e l −>rowCount ( ) > 0 && T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l R e g i s t r o s ( ) > 1 ) { const s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( 0 , text () . toLatin1 () . toInt () ; 0 )−> T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e m o v a R e g i s t r o ( i n d i c e R e g i s t r o ) ; t a b l e V i e w E d i c a o M o d e l −>removeRow ( 0 ) ; t o t a l L i n h a s −−; v e c t o r <s i z e t > : : c o n s t i t e r a t o r c i t = s t d : : f i n d ( indicesTodosRegistros . cbegin () , i n d i c e s T o d o s R e g i s t r o s . cend ( ) , indiceRegistro ) ; i n d i c e s T o d o s R e g i s t r o s . cend ( ) ) i f ( c i t != { indicesTodosRegistros . erase ( cit ) ; } i ++; i f ( ( i % t a x a N o t i f i c a c a o ) == 0 ) { p r o g r e s s −>s e t V a l u e ( min ( ( i n t ) ( i 100) , 99) ) ; ∗ 1.0 / totalLinhasRemover ∗ 300 963 Q C o r e A p p l i c a t i o n : : p r o c e s s E v e n t s ( QEventLoop : : ExcludeUserInputEvents ) ; } 964 965 966 967 968 969 970 971 972 973 974 } u i . t a b l e V i e w E d i c a o −>s e t U p d a t e s E n a b l e d ( t r u e ) ; u i . t a b l e V i e w E d i c a o −>b l o c k S i g n a l s ( f a l s e ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( f a l s e ) ; emit t a b l e V i e w E d i c a o M o d e l −>l a y o u t C h a n g e d ( ) ; if { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ”Não é p o s sı́ v e l r e m o v e r o ú l t i m o r e g i s t r o ! ” ) ) ; } 975 976 977 978 979 980 981 982 983 984 985 986 delete } void { const const i n d i c e s T o d o s R e g i s t r o s . push back ( indiceNovoRegistro ) ; v e c t o r <s t r i n g > r e g i s t r o V e t o r = r . v a l o r e s S t r i n g ( ) ; r e g i s t r o V e t o r . i n s e r t ( r e g i s t r o V e t o r . begin ( ) , U t i l i d a d e s : : dblToStdStr ( indiceNovoRegistro , 0) ) ; Populador : : populeLinhaTabela ( r e g i s t r o V e t o r , tableViewEdicao ) ; 999 1000 1028 1029 indiceNovaLinha , ui . a t u a l i z e E s t a t i s t i c a C o l u n a ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ) ; 1001 1002 1025 1026 1027 s i z e t i n d i c e N o v o R e g i s t r o = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> novoRegistro () ; R e g i s t r o &r = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o ( indiceNovoRegistro ) ; c o n s t s i z e t i n d i c e N o v a L i n h a = t a b l e V i e w E d i c a o M o d e l −>rowCount ( ) ; t a b l e V i e w E d i c a o M o d e l −>i n s e r t R o w ( t a b l e V i e w E d i c a o M o d e l −>rowCount ( ) ) ; t o t a l L i n h a s ++; 997 998 1017 1018 1019 1020 1021 1022 1023 1024 WidgetTabelaEditora : : i n s e r i r L i n h a ( ) mostrarTodos ( ) ; 988 989 990 991 992 993 994 995 996 1011 1012 1013 1014 1015 1016 progress ; a t u a l i z e E s t a t i s t i c a C o l u n a ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> atributos () ) ; 987 1003 1004 1005 1006 1007 1008 1009 1010 ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>t o t a l R e g i s t r o s ( ) == 1 ) u i . t a b l e V i e w E d i c a o −>s e t C u r r e n t I n d e x ( t a b l e V i e w E d i c a o M o d e l −>i n d e x ( indiceNovaLinha , 1) ) ; } void { WidgetTabelaEditora : : i n s e r i r C o l u n a D i a l o g ( ) f o c a r N o s R e g i s t r o s ( v e c t o r <s i z e t >() , true ) ; D i a l o g N o v a C o l u n a ∗ d i a l o g N o v a C o l u n a = new D i a l o g N o v a C o l u n a ( t h i s ) ; c o n n e c t ( d i a l o g N o v a C o l u n a , SIGNAL ( i n s e r i r C o l u n a ( c o n s t s t r i n g & , c o n s t TipoDado AT ) ) , t h i s , SLOT( i n s e r i r C o l u n a ( c o n s t s t r i n g & , c o n s t TipoDado AT ) ) ) ; d i a l o g N o v a C o l u n a−>e x e c ( ) ; d e l e t e dialogNovaColuna ; } void WidgetTabelaEditora : : i n s e r i r C o l u n a ( const TipoDado AT t i p o ) s t r i n g &a t r i b u t o , const { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a d i c i o n a r A t r i b u t o ( a t r i b u t o , tipo ) ; v e c t o r <s t r i n g > a t r i b u t o s = v e c t o r <s t r i n g >() ; a t r i b u t o s . push back ( a t r i b u t o ) ; atualizeEstatisticaColuna ( atributos ) ; t a b l e V i e w E d i c a o M o d e l −>setColumnCount ( t a b l e V i e w E d i c a o M o d e l −> columnCount ( ) + 1 ) ; map<s i z e t , s t r i n g > c o l u n a S t r = map<s i z e t , s t r i n g >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>v a l o r e s A t r i b u t o S t r ( a t r i b u t o , colunaStr ) ; Populador : : populeColunaTabelaEditora ( colunaStr , t a b l e V i e w E d i c a o M o d e l −> columnCount ( ) − 1 , u i . t a b l e V i e w E d i c a o , a t r i b u t o ) ; 301 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 } void { WidgetTabelaEditora : : repopularColunas ( const map<s i z e t , for s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; colunaStr . clear () ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>v a l o r e s A t r i b u t o S t r P o r I n d i c e ( atributo , indicesTodosRegistros , colunaStr ) ; c o n s t s i z e t i n d i c e A t r i b u t o = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> i n d i c e A t r i b u t o (∗ c i t A t r i b u t o ) ; Populador : : populeColunaTabelaEditora ( colunaStr , i n d i c e A t r i b u t o + 1 , u i . t a b l e V i e w E d i c a o ) ; //+1 p o i s a p p r i m e i r a c o l u n a tem o s i d s } } void { WidgetTabelaEditora : : renomearColunaDialog ( ) removerComboBox ( ) ; c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; } c o n s t s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; 1056 1057 1058 1059 1060 1061 1062 D i a l o g R e n o m e a r ∗ d i a l o g R e n o m e a r = new D i a l o g R e n o m e a r ( a t r i b u t o , t h i s ) ; // deletado logo abaixo c o n n e c t ( d i a l o g R e n o m e a r , SIGNAL ( r e n o m e a r ( c o n s t s t r i n g & , c o n s t s t r i n g &) ) , t h i s , SLOT( r e n o m e a r C o l u n a ( c o n s t s t r i n g & , c o n s t s t r i n g &) ) ) ; 1063 1070 1071 ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . c b e g i n ( ) ; c i t A t r i b u t o != a t r i b u t o s . c e n d ( ) ; c i t A t r i b u t o ++) const 1046 1064 1065 1066 1067 1068 1069 v e c t o r <s t r i n g > &a t r i b u t o s ) s t r i n g >() ; { 1044 1045 1047 1048 1049 1050 1051 1052 1053 1054 1055 s t r i n g > c o l u n a S t r = map<s i z e t , d i a l o g R e n o m e a r−>e x e c ( ) ; d e l e t e dialogRenomear ; } void WidgetTabelaEditora : : renomearColuna ( c o n s t s t r i n g &nomeNovo ) s t r i n g &nomeAntigo , const { T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e n o m e r A t r i b u t o ( nomeAntigo , nomeNovo ) ; C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>r e n o m e r A t r i b u t o ( nomeAntigo , nomeNovo ) ; 1072 1073 1074 const 1075 1076 s i z e t i n d i c e A t r i b u t o = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> i n d i c e A t r i b u t o ( nomeNovo ) ; QStandardItemModel ∗ model = ( QStandardItemModel ∗ ) u i . t a b l e V i e w E d i c a o −> model ( ) ; model−>s e t H o r i z o n t a l H e a d e r I t e m ( i n d i c e A t r i b u t o + 1 , new Q S t a n d a r d I t e m ( Q S t r i n g : : f r o m L a t i n 1 ( nomeNovo . c s t r ( ) ) ) ) ; //+1 p o i s a p r i m e i r a c o l u n a tem o s i d s 1077 1078 1079 1080 1081 // u i . t a b l e V i e w E d i c a o −>r e s i z e C o l u m n s T o C o n t e n t s ( ) ; lento demais // t o d o e x p o r t a r B D A c t−>s e t E n a b l e d ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> nenhumAtributoAlteradoRemovido ( ) ) ; 1082 1083 1084 } 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 { void WidgetTabelaEditora : : f o c a r N o s R e g i s t r o s ( const , c o n s t bool mostrarTodos ) c o n s t const if { int totalLinhas = v e c t o r <s i z e t > &r e g i s t r o s t a b l e V i e w E d i c a o M o d e l −>rowCount ( ) ; ( mostrarTodos ) for { ( int linha = 0; linha < totalLinhas ; l i n h a ++) u i . t a b l e V i e w E d i c a o −>setRowHidden ( l i n h a , } } false ) ; 302 1095 1096 1097 1098 1099 else { for { 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 linha = 0; linha < totalLinhas ; l i n h a ++) s i z e t i n d i c e R e g i s t r o L i n h a = t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , 0 )−>t e x t ( ) . t o L a t i n 1 ( ) . t o I n t ( ) ; u i . t a b l e V i e w E d i c a o −>setRowHidden ( l i n h a , s t d : : f i n d ( r e g i s t r o s . b e g i n ( ) , r e g i s t r o s . end ( ) , i n d i c e R e g i s t r o L i n h a ) == r e g i s t r o s . end ( ) ) ; const 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 ( int } } } void { WidgetTabelaEditora : : mostrarTodos ( ) removerComboBox ( ) ; f o c a r N o s R e g i s t r o s ( v e c t o r <s i z e t >() , true ) ; } void WidgetTabelaEditora : : a t u a l i z e E s t a t i s t i c a C o l u n a ( const atributos ) v e c t o r <s t r i n g > & { habilitarEventos ( false ) ; T h r e a d W o r k e r C o l e t a r E s t a t i s t i c a s ∗ w o r k e r E s t a t i s t i c a = new ThreadWorkerColetarEstatisticas ( atributos , this ) ; t h r e a d C o n t r o l l e r . setarWorker ( w o r k e r E s t a t i s t i c a ) ; threadController . iniciarExecucaoWorker ( t h i s ) ; } WidgetTabelaEditora : : r e s i z e E v e n t ( QResizeEvent ∗ evento ) void { QWidget : : r e s i z e E v e n t ( e v e n t o ) ; const Q S i z e & s i z e = e v e n t o−>s i z e ( ) ; menu−>r e s i z e ( s i z e . w i d t h ( ) , menu−>h e i g h t ( ) ) ; } void { ∗ porcentagem ) WidgetTabelaEditora : : onUpdateProgresso ( i n t u i . p r o g r e s s B a r −>s e t V a l u e ( ∗ p o r c e n t a g e m ) ; d e l e t e porcentagem ; } void WidgetTabelaEditora : : f i m C o l e t a E s t a t i s t i c a s ( const atributos ) v e c t o r <s t r i n g > ∗ { u i . p r o g r e s s B a r −>s e t V a l u e ( 0 ) ; delete atributos ; habilitarEventos ( true ) ; } void { WidgetTabelaEditora : : resetarDestaque ( ) const const int int t o t a l L i n h a s = t a b l e V i e w E d i c a o M o d e l −>rowCount ( ) ; t o t a l C o l u n a s = t a b l e V i e w E d i c a o M o d e l −>columnCount ( ) ; u i . t a b l e V i e w E d i c a o −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; u i . t a b l e V i e w E d i c a o −>b l o c k S i g n a l s ( t r u e ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( t r u e ) ; for { ( int for { linha = 0; ( int linha < totalLinhas ; coluna = 1; l i n h a ++) coluna < totalColunas ; t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , white ) ; c o l u n a ++) c o l u n a )−>s e t B a c k g r o u n d ( Qt : : } } u i . t a b l e V i e w E d i c a o −>s e t U p d a t e s E n a b l e d ( t r u e ) ; u i . t a b l e V i e w E d i c a o −>b l o c k S i g n a l s ( f a l s e ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( f a l s e ) ; emit t a b l e V i e w E d i c a o M o d e l −>l a y o u t C h a n g e d ( ) ; } void W i d g e t T a b e l a E d i t o r a : : d e s t a c a r ( c o n s t map<s t r i n g , indicesPorAtributo ) { resetarDestaque () ; v e c t o r <s i z e t >> & 303 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 registrosDestacadosPorAtributo = indicesPorAtributo ; const const t o t a l L i n h a s = t a b l e V i e w E d i c a o M o d e l −>rowCount ( ) ; t o t a l C o l u n a s = t a b l e V i e w E d i c a o M o d e l −>columnCount ( ) ; map<s i z e t , i n t > mapIdParaLinha = map<s i z e t , i n t >() ; v e c t o r <s i z e t > c o l u n a I d s = v e c t o r <s i z e t >() ; f o r ( i n t l i n h a = 0 ; l i n h a < t o t a l L i n h a s ; l i n h a ++) { c o n s t s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , −>t e x t ( ) . t o L a t i n 1 ( ) . t o I n t ( ) ; mapIdParaLinha [ i n d i c e R e g i s t r o ] = l i n h a ; } 1181 1182 1183 1184 1185 1186 1187 1188 0) u i . t a b l e V i e w E d i c a o −>s e t U p d a t e s E n a b l e d ( f a l s e ) ; u i . t a b l e V i e w E d i c a o −>b l o c k S i g n a l s ( t r u e ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( t r u e ) ; for 1189 1190 1191 1192 1193 1194 1195 ( map<s t r i n g , v e c t o r <s i z e t >>:: c o n s t i t e r a t o r c i t A t r i b I d x s = registrosDestacadosPorAtributo . cbegin () ; r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o . cend ( ) ; c i t A t r i b I d x s != c i t A t r i b I d x s ++) { const const const 1196 1197 for 1198 1199 1200 1201 1202 1203 1204 s t r i n g &a t r i b u t o = c i t A t r i b I d x s −> f i r s t ; v e c t o r <s i z e t > &i d x s A t r i b u t o = c i t A t r i b I d x s −>s e c o n d ; s i z e t i n d i c e A t r i b u t o = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributo ) ; ( v e c t o r <s i z e t > : : c o n s t i t e r a t o r c i t I d x R e g = i d x s A t r i b u t o . c b e g i n () ; c i t I d x R e g != i d x s A t r i b u t o . c e n d ( ) ; c i t I d x R e g ++) { const const const 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 int int size t indiceRegistro = ∗citIdxReg ; i n t l i n h a = mapIdParaLinha [ i n d i c e R e g i s t r o ] ; i n t c o l u n a = i n d i c e A t r i b u t o + 1 ; //+1 p o i s a c o l u n a tem o s i d s t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , QColor ( 2 5 5 , 1 0 0 , 1 0 0 ) ) ; primeira c o l u n a )−>s e t B a c k g r o u n d ( } } u i . t a b l e V i e w E d i c a o −>s e t U p d a t e s E n a b l e d ( t r u e ) ; u i . t a b l e V i e w E d i c a o −>b l o c k S i g n a l s ( f a l s e ) ; t a b l e V i e w E d i c a o M o d e l −>b l o c k S i g n a l s ( f a l s e ) ; emit t a b l e V i e w E d i c a o M o d e l −>l a y o u t C h a n g e d ( ) ; } void { WidgetTabelaEditora : : setBarraMenuVisivel ( const menu−>s e t V i s i b l e ( v i s i v e l ) ; u i . v e r t i c a l S p a c e r −>c h a n g e S i z e ( 2 0 , visivel ? 35 bool : visivel ) 0) ; } void 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 { 1241 1242 { WidgetTabelaEditora : : a p o s I d e n t i f i c a r R e g i s t r o ( const r e g i s t r o s I d e n t i f i c a d o s ) const string if { v e c t o r <s i z e t > & msg ; ( r e g i s t r o s I d e n t i f i c a d o s . empty ( ) ) msg = ”Nenhum registro localizado . ” ; } else { focarNosRegistros ( registrosIdentificados , f a l s e ) ; msg = U t i l i d a d e s : : d b l T o S t d S t r ( r e g i s t r o s I d e n t i f i c a d o s . s i z e ( ) , + ” r e g i s t r o ( s ) l o c a l i z a d o ( s ) . \ n” ; 0) } QMessageBox : : i n f o r m a t i o n (NULL, ”” , Q S t r i n g : : f r o m L a t i n 1 ( msg . c s t r ( ) ) ) ; } void WidgetTabelaEditora : : aposRemoverRegistro ( const registrosRemovidos ) removerLinhas ( registrosRemovidos , false ) ; v e c t o r <s i z e t > & 304 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 const s t r i n g msg = U t i l i d a d e s : : d b l T o S t d S t r ( r e g i s t r o s R e m o v i d o s . s i z e ( ) , 0) + ” r e g i s t r o ( s ) removido ( s ) . \ n” ; QMessageBox : : i n f o r m a t i o n (NULL, bool { 1256 1257 1258 1259 void { c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; } c o n s t s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; if { QString : : } v e c t o r <s i z e t > i n d i c e s V a l i d o s = v e c t o r <s i z e t >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosDestacadosPorAtributo [ atributo ] , indicesValidos ) ; 1283 1284 D i a l o g E s c o l h e r D i s t r i b u i c a o ∗ d i a l o g E s c o l h e r D i s t r i b u i c a o = new DialogEscolherDistribuicao ( atributo , indicesValidos , W i d g e t E s c o l h e r D P : : Opcao : : ESCOLHER, t h i s ) ; c o n n e c t ( d i a l o g E s c o l h e r D i s t r i b u i c a o −> w i d g e t E s c o l h e r D P , SIGNAL ( d i s t r i b u i c o e s E s c o l h i d a s ( c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t D i s t r i b u i c a o >&)) , t h i s , SLOT( p o p u l a r L i n h a D P ( c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t D i s t r i b u i c a o >&)) ) ; 1285 1305 1306 ( ! T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>ehQuant ( a t r i b u t o ) ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a q u a n t i t a t i v a ! ” ) ) ; return ; 1278 1279 1280 1281 1282 1304 WidgetTabelaEditora : : gerarValorDPDialog ( ) removerComboBox ( ) ; 1274 1275 1276 1277 1302 1303 Qt : : } 1271 1272 1273 1298 1299 1300 1301 W i d g e t T a b e l a E d i t o r a : : a t r i b u t o S e l e c i o n a d o ( s t r i n g &a t r i b u t o ) a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , H o r i z o n t a l ) . t o S t r i n g ( ) . toLa tin 1 ( ) . data ( ) ; return true ; 1269 1270 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 Q S t r i n g : : f r o m L a t i n 1 ( msg . c s t r ( ) ) ) ; c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return f a l s e ; } 1254 1255 1260 1261 1262 1263 1264 1265 1266 1267 1268 ”” , } d i a l o g E s c o l h e r D i s t r i b u i c a o −>e x e c ( ) ; delete dialogEscolherDistribuicao ; } void { WidgetTabelaEditora : : gerarLinhaDPDialog ( ) removerComboBox ( ) ; c o n s t i n t l i n h a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . row ( ) ; i f ( l i n h a == −1) { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ” S e l e c i o n e uma l i n h a ! ” ) ) ; return ; } const QString : : v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; v e c t o r <v e c t o r <s i z e t >> r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r = v e c t o r < v e c t o r <s i z e t >>() ; v e c t o r <v e c t o r <s i z e t >> i n d i c e s V a l i d o s P o r A t r i b u t o = v e c t o r <v e c t o r <s i z e t >>() ; for ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r citAtributo = atributosQuant . cbegin 305 () ; c i t A t r i b u t o != a t r i b u t o s Q u a n t . c e n d ( ) ; c i t A t r i b u t o ++) 1307 1308 1309 1310 1311 { c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r . push back ( registrosDestacadosPorAtributo [ atributo ]) ; } 1312 1313 1314 T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosDestacadosPorAtributoVetor , indicesValidosPorAtributo ) ; 1315 1316 D i a l o g E s c o l h e r D i s t r i b u i c a o ∗ d i a l o g E s c o l h e r D i s t r i b u i c a o = new D i a l o g E s c o l h e r D i s t r i b u i c a o ( atributosQuant , i n d i c e s V a l i d o s P o r A t r i b u t o , W i d g e t E s c o l h e r D P : : Opcao : : ESCOLHER, t h i s ); c o n n e c t ( d i a l o g E s c o l h e r D i s t r i b u i c a o −> w i d g e t E s c o l h e r D P , SIGNAL ( d i s t r i b u i c o e s E s c o l h i d a s ( c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t D i s t r i b u i c a o >&)) , t h i s , SLOT( p o p u l a r L i n h a D P ( c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t D i s t r i b u i c a o >&)) ) ; 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 d i a l o g E s c o l h e r D i s t r i b u i c a o −>e x e c ( ) ; delete dialogEscolherDistribuicao ; } void { 1327 1328 1329 1330 1331 1332 1333 1334 1335 if { v e c t o r <s i z e t > i n d i c e s V a l i d o s = v e c t o r <s i z e t >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosDestacadosPorAtributo [ atributo ] , indicesValidos ) ; D i a l o g E s c o l h e r D i s t r i b u i c a o ∗ d i a l o g E s c o l h e r D i s t r i b u i c a o = new DialogEscolherDistribuicao ( atributo , indicesValidos , W i d g e t E s c o l h e r D P : : Opcao : : ESCOLHER, t h i s ) ; c o n n e c t ( d i a l o g E s c o l h e r D i s t r i b u i c a o −> w i d g e t E s c o l h e r D P , SIGNAL ( d i s t r i b u i c o e s E s c o l h i d a s ( c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t D i s t r i b u i c a o >&)) , t h i s , SLOT( popularColunaDP ( c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t D i s t r i b u i c a o >&)) ) ; 1343 1357 1358 1359 1360 1361 1362 1363 1364 1365 QString : : } 1341 1342 1355 1356 ( ! T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>ehQuant ( a t r i b u t o ) ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a q u a n t i t a t i v a ! ” ) ) ; return ; 1336 1337 1338 1339 1340 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 WidgetTabelaEditora : : gerarColunaDPDialog ( ) c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; } c o n s t s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; d i a l o g E s c o l h e r D i s t r i b u i c a o −>e x e c ( ) ; delete dialogEscolherDistribuicao ; } void { WidgetTabelaEditora : : gerarValorRLSDialog ( ) removerComboBox ( ) ; c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , Q S t r i n g : : f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; } c o n s t s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; if { ( ! T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>ehQuant ( a t r i b u t o ) ) QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a q u a n t i t a t i v a ! ” ) ) ; return ; } QString : : 306 1366 1367 const 1368 1369 v e c t o r <v e c t o r <s i z e t >> r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r = v e c t o r < v e c t o r <s i z e t >>() ; v e c t o r <v e c t o r <s i z e t >> i n d i c e s V a l i d o s P o r A t r i b u t o = v e c t o r <v e c t o r <s i z e t >>() ; 1370 1371 1372 for 1373 1374 1375 1376 1377 c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r . push back ( registrosDestacadosPorAtributo [ atributo ]) ; } T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosDestacadosPorAtributoVetor , indicesValidosPorAtributo ) ; 1381 1382 D i a l o g E s c o l h e r R L S ∗ d i a l o g E s c o l h e r R L S = new D i a l o g E s c o l h e r R L S ( a t r i b u t o , atributosQuant , indicesValidosPorAtributo , t h i s ) ; c o n n e c t ( d i a l o g E s c o l h e r R L S , SIGNAL ( r e g r e s s o e s E s c o l h i d a s ( c o n s t v e c t o r < s t r i n g >&, c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s >&)) , t h i s , SLOT( p o p u l a r L i n h a R L S ( c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s >&)) ) ; 1383 d i a l o g E s c o l h e r R L S −>e x e c ( ) ; d e l e t e dialogEscolherRLS ; } void { WidgetTabelaEditora : : gerarLinhaRLSDialog ( ) removerComboBox ( ) ; c o n s t i n t l i n h a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . row ( ) ; i f ( l i n h a == −1) { QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ” S e l e c i o n e uma l i n h a ! ” ) ) ; return ; } 1396 1397 1398 1399 const 1400 1401 QString : : v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; v e c t o r <v e c t o r <s i z e t >> r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r = v e c t o r < v e c t o r <s i z e t >>() ; v e c t o r <v e c t o r <s i z e t >> i n d i c e s V a l i d o s P o r A t r i b u t o = v e c t o r <v e c t o r <s i z e t >>() ; 1402 1403 1404 for 1405 1406 1407 1408 1409 ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s Q u a n t . c b e g i n () ; c i t A t r i b u t o != a t r i b u t o s Q u a n t . c e n d ( ) ; c i t A t r i b u t o ++) { c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r . push back ( registrosDestacadosPorAtributo [ atributo ]) ; } 1410 1411 1412 T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosDestacadosPorAtributoVetor , indicesValidosPorAtributo ) ; 1413 1414 D i a l o g E s c o l h e r R L S ∗ d i a l o g E s c o l h e r R L S = new D i a l o g E s c o l h e r R L S ( atributosQuant , atributosQuant , indicesValidosPorAtributo , t h i s ) ; c o n n e c t ( d i a l o g E s c o l h e r R L S , SIGNAL ( r e g r e s s o e s E s c o l h i d a s ( c o n s t v e c t o r < s t r i n g >&, c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s >&)) , t h i s , SLOT( p o p u l a r L i n h a R L S ( c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s >&)) ) ; 1415 1416 1417 1418 1419 1420 1421 1422 1423 ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s Q u a n t . c b e g i n () ; c i t A t r i b u t o != a t r i b u t o s Q u a n t . c e n d ( ) ; c i t A t r i b u t o ++) { 1378 1379 1380 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; d i a l o g E s c o l h e r R L S −>e x e c ( ) ; d e l e t e dialogEscolherRLS ; } void { WidgetTabelaEditora : : gerarColunaRLSDialog ( ) c o n s t i n t i n d i c e C o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; i f ( i n d i c e C o l u n a < 1 ) // nao pode s e r 0 , p o i s a c o l u n a 0 ( p r i m e i r a ) contem o s i d s 307 { 1424 1425 QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a ! ” ) ) ; return ; 1426 1427 1428 } const 1429 1430 1431 1432 if { const 1440 1441 for 1442 1443 1444 1445 1446 v e c t o r <s t r i n g > a t r i b u t o s Q u a n t = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>a t r i b u t o s Q u a n t i t a t i v o s ( ) ; ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s Q u a n t . c b e g i n () ; c i t A t r i b u t o != a t r i b u t o s Q u a n t . c e n d ( ) ; c i t A t r i b u t o ++) { c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r . push back ( registrosDestacadosPorAtributo [ atributo ]) ; } 1447 1448 1449 T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i n d i c e R e g i s t r o s C o m p l e m e n t a r e s ( registrosDestacadosPorAtributoVetor , indicesValidosPorAtributo ) ; 1450 1451 D i a l o g E s c o l h e r R L S ∗ d i a l o g E s c o l h e r R L S = new D i a l o g E s c o l h e r R L S ( a t r i b u t o , atributosQuant , indicesValidosPorAtributo , t h i s ) ; c o n n e c t ( d i a l o g E s c o l h e r R L S , SIGNAL ( r e g r e s s o e s E s c o l h i d a s ( c o n s t v e c t o r < s t r i n g >&, c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s >&)) , t h i s , SLOT( p o p u l a r C o l u n a R L S ( c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <s t r i n g >&, c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s >&)) ) ; 1452 d i a l o g E s c o l h e r R L S −>e x e c ( ) ; d e l e t e dialogEscolherRLS ; } void W i d g e t T a b e l a E d i t o r a : : p o p u l a r L i n h a D P ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <c o n s t D i s t r i b u i c a o > & d i s t r i b u i c o e s ) { const const const 1465 1466 int int l i n h a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . row ( ) ; c o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , text () . toLatin1 () . toInt () ; 0 )−> T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>p o p u l a r R e g i s t r o D P ( i n d i c e R e g i s t r o , atributos , distribuicoes ) ; 1467 1468 c o n s t R e g i s t r o &r = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o ( indiceRegistro ) ; v e c t o r <s t r i n g > r e g i s t r o V e t o r = r . v a l o r e s S t r i n g ( ) ; r e g i s t r o V e t o r . i n s e r t ( r e g i s t r o V e t o r . begin ( ) , U t i l i d a d e s : : dblToStdStr ( i n d i c e R e g i s t r o , 0) ) ; Populador : : populeLinhaTabela ( r e g i s t r o V e t o r , linha , u i . tableViewEdicao ) ; 1469 1470 1471 1472 1473 1474 1475 atualizeEstatisticaColuna ( atributos ) ; u i . t a b l e V i e w E d i c a o −>s e t C u r r e n t I n d e x ( t a b l e V i e w E d i c a o M o d e l −>i n d e x ( l i n h a , coluna ) ) ; 1476 1477 1478 } 1479 1480 1481 1482 { 1483 QString : : v e c t o r <v e c t o r <s i z e t >> r e g i s t r o s D e s t a c a d o s P o r A t r i b u t o V e t o r = v e c t o r < v e c t o r <s i z e t >>() ; v e c t o r <v e c t o r <s i z e t >> i n d i c e s V a l i d o s P o r A t r i b u t o = v e c t o r <v e c t o r <s i z e t >>() ; 1439 1460 1461 1462 1463 1464 ( ! T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>ehQuant ( a t r i b u t o ) ) } 1437 1438 1453 1454 1455 1456 1457 1458 1459 s t r i n g a t r i b u t o = t a b l e V i e w E d i c a o M o d e l −>h e a d e r D a t a ( i n d i c e C o l u n a , Qt : : H o r i z o n t a l ) . t o S t r i n g ( ) . t o L a t i n 1 ( ) . d a t a ( ) ; QMessageBox : : w a r n i n g (NULL, Q S t r i n g : : f r o m L a t i n 1 ( ” A v i s o ” ) , f r o m L a t i n 1 ( ” S e l e c i o n e uma c o l u n a q u a n t i t a t i v a ! ” ) ) ; return ; 1433 1434 1435 1436 QString : : void W i d g e t T a b e l a E d i t o r a : : popularColunaDP ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <c o n s t D i s t r i b u i c a o > & d i s t r i b u i c o e s ) const const int l i n h a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . row ( ) ; s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , text () . toLatin1 () . toInt () ; 0 )−> 308 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>p o p u l a r C o l u n a s D P ( a t r i b u t o s , distribuicoes ) ; atualizeEstatisticaColuna ( atributos ) ; repopularColunas ( atributos ) ; } void { const const const 1500 1501 l i n h a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . row ( ) ; c o l u n a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . column ( ) ; s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , text () . toLatin1 () . toInt () ; 1506 1507 1508 1509 1510 atualizeEstatisticaColuna ( atributosDep ) ; u i . t a b l e V i e w E d i c a o −>s e t C u r r e n t I n d e x ( t a b l e V i e w E d i c a o M o d e l −>i n d e x ( l i n h a , coluna ) ) ; } void WidgetTabelaEditora : : popularColunaRLS ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s I n d e p , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s D e p , c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s > &r e g r e s s o e s ) { const const 1521 1522 int l i n h a = u i . t a b l e V i e w E d i c a o −>c u r r e n t I n d e x ( ) . row ( ) ; s i z e t i n d i c e R e g i s t r o = t a b l e V i e w E d i c a o M o d e l −>i t e m ( l i n h a , text () . toLatin1 () . toInt () ; 0 )−> T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>p o p u l a r C o l u n a s R L S ( a t r i b u t o s I n d e p , atributosDep , r e g r e s s o e s ) ; atualizeEstatisticaColuna ( atributosDep ) ; repopularColunas ( atributosDep ) ; } Listagem B.102: widget tabela editora.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 0 )−> c o n s t R e g i s t r o &r = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o ( indiceRegistro ) ; v e c t o r <s t r i n g > r e g i s t r o V e t o r = r . v a l o r e s S t r i n g ( ) ; r e g i s t r o V e t o r . i n s e r t ( r e g i s t r o V e t o r . begin ( ) , U t i l i d a d e s : : dblToStdStr ( i n d i c e R e g i s t r o , 0) ) ; Populador : : populeLinhaTabela ( r e g i s t r o V e t o r , linha , u i . tableViewEdicao ) ; 1504 1505 1523 1524 1525 1526 1527 int int T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>p o p u l a r R e g i s t r o R L S ( i n d i c e R e g i s t r o , atributosIndep , atributosDep , r e g r e s s o e s ) ; 1502 1503 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 WidgetTabelaEditora : : popularLinhaRLS ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s I n d e p , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s D e p , c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s > &r e g r e s s o e s ) #i f n d e f WIDGET TABELA EDITORA H #d e f i n e WIDGET TABELA EDITORA H #i n c l u d e ” u i w i d g e t t a b e l a e d i t o r a . h” #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <QModelIndex> <QStandardItemModel> <QComboBox> <Q R e s i z e E v e n t> #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e ” enums at . h” ” w i d g e t p r o g r e s s o . h” ” t h r e a d c o n t r o l l e r . h” ” t a b e l a r e g i s t r o s . h” ” v a l o r b a s e . h” #i n c l u d e <s t r i n g > using namespace std ; c l a s s WidgetTabelaEditora { Q OBJECT : public WidgetProgresso 309 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 public : WidgetTabelaEditora ( const parent = 0) ; ˜ WidgetTabelaEditora ( ) ; void void v e c t o r <s i z e t > &i n d i c e s R e g i s t r o s , QWidget ∗ d e s t a c a r ( c o n s t map<s t r i n g , v e c t o r <s i z e t >> &i n d i c e s P o r A t r i b u t o ) ; setBarraMenuVisivel ( const bool v i s i v e l ) ; private : Ui : : W i d g e t T a b e l a E d i t o r a u i ; QComboBox ∗ comboBox ; QModelIndex ∗ i n d i c e C o m b o ; QStandardItemModel ∗ t a b l e V i e w E d i c a o M o d e l ; int linhaClick ; int colunaClick ; size t totalLinhas ; ThreadController threadController ; v e c t o r <s i z e t > indicesTodosRegistros ; map<s t r i n g , v e c t o r <s i z e t >> registrosDestacadosPorAtributo ; QMenuBar ∗ menu ; void void void void bool void void void void inicializaMenuBarra () ; removerComboBox ( ) ; removerComboBox ( c o n s t s t r i n g &n o v o V a l o r S t r ) ; habilitarEventos ( const bool habilitado ) const ; a t r i b u t o S e l e c i o n a d o ( s t r i n g &a t r i b u t o ) ; f o c a r N o s R e g i s t r o s ( c o n s t v e c t o r <s i z e t > &r e g i s t r o s , c o n s t b o o l mostrarTodos ) c o n s t ; r e p o p u l a r C o l u n a s ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s ) ; resetarDestaque () ; a p o s I d e n t i f i c a r R e g i s t r o ( c o n s t v e c t o r <s i z e t > & r e g i s t r o s I d e n t i f i c a d o s ) const ; a p o s R e m o v e r R e g i s t r o ( c o n s t v e c t o r <s i z e t > &r e g i s t r o s R e m o v i d o s ) ; a t u a l i z e E s t a t i s t i c a C o l u n a ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s ) ; 57 void 58 void 59 60 p r o t e c t e d : 61 #i f n d e f TCC RODOLFO 62 v i r t u a l void onUpdateProgresso ( StatusThread ∗) {}; 63 #e n d i f 64 v i r t u a l void onUpdateProgresso ( i n t ∗ porcentagem ) ; 65 v i r t u a l void r e s i z e E v e n t ( QResizeEvent ∗ evento ) ; 66 67 p u b l i c s l o t s : 68 void removerLinha ( c o ns t bool removerRegistro = t r u e ) ; 69 void removerLinhasDestacadasDoAtributo ( const bool removerRegistro = true ) ; 70 void removerTodasLinhas ( ) ; 71 72 void s u b s t i t u a C l i c k () ; 73 74 p r i v a t e s l o t s : 75 v o i d f i m C o l e t a E s t a t i s t i c a s ( c o n s t v e c t o r <s t r i n g > ∗ a t r i b u t o s ) ; 76 v o i d itemComboClick ( QString t e x t o S e l e c i o n a d o ) ; 77 void mostrarTodos ( ) ; 78 79 v o i d c e l u l a A l t e r a d a ( QStandardItem ∗ item ) ; 80 v o i d c e l u l a C l i c k ( c o n s t QModelIndex &i n d i c e ) ; 81 v o i d c e l u l a C l i c k D u p l o ( c o n s t QModelIndex &i n d i c e ) ; 82 83 void inserirColunaDialog () ; 84 v o i d i n s e r i r C o l u n a ( c o n s t s t r i n g &a t r i b u t o , c o n s t TipoDado AT t i p o ) ; 85 void i n s e r i r L i n h a () ; 86 87 void renomearColunaDialog ( ) ; 88 v o i d r e n o m e a r C o l u n a ( c o n s t s t r i n g &nomeAntigo , c o n s t s t r i n g &nomeNovo ) ; 89 90 void removerColuna ( ) ; 91 v o i d r e m o v e r L i n h a s ( c o n s t v e c t o r <s i z e t > &i n d i c e R e g i s t r o s , c o n s t b o o l removerRegistro = true ) ; 92 93 void r e m o v e r I d e n t i f i c a r C l i c k () ; 94 void r e m o v e r I d e n t i f i c a r Q u a l i t a t i v a D i a l o g ( const s t r i n g & atributoSelecionado ) ; 95 void removerIdentificarQuantitativoDialog ( const s t r i n g & atributoSelecionado ) ; 96 void remIdeOutliersDialog () ; 97 v o i d r e m o v e r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t > &v a l o r e s , c o n s t s t r i n g &a t r i b u t o , c o n s t b o o l missingsTmb , c o n s t b o o l invalidosTmb ) ; 310 98 void r e m o v e r R e g i s t r o s Q u a n t P o r I n t e r v a l o ( c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , c o n s t s t r i n g &a t r i b u t o , c o n s t b o o l missingsTmb , c o n s t b o o l i n v a l i d o s T m b ) ; 99 100 void 101 void i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t > & v a l o r e s , c o n s t s t r i n g &a t r i b u t o , c o n s t b o o l missingsTmb , c o n s t bool invalidosTmb ) const ; identificarRegistrosQuantPorIntervalo ( const vector< T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , c o n s t s t r i n g &a t r i b u t o , c o n s t b o o l missingsTmb , c o n s t b o o l i n v a l i d o s T m b ) c o n s t ; 102 103 104 105 void void void 106 void 107 void 108 void 109 void 110 void 111 void 112 void 113 void 114 void 115 void 116 void 117 void 118 void 119 void 120 void 121 122 123 124 125 126 127 128 129 130 131 132 void void void void void void s u b s t i t u a Q u a l i t a t i v o D i a l o g ( c o n s t s t r i n g &a t r i b u t o S e l e c i o n a d o ) ; s u b s t i t u a Q u a n t i t a t i v o D i a l o g ( c o n s t s t r i n g &a t r i b u t o S e l e c i o n a d o ) ; s u b s t i t u a M i s s i n g s ( c o n s t s t r i n g &a t r i b u t o , V a l o r B a s e ∗ c o n s t novoValor ) ; s u b s t i t u a T o d o s ( c o n s t s t r i n g &a t r i b u t o , V a l o r B a s e ∗ c o n s t n o v o V a l o r ) ; s u b s t i t u a I n v a l i d o s ( c o n s t s t r i n g &a t r i b u t o , V a l o r B a s e ∗ c o n s t novoValor ) ; s u b s t i t u a D e s t a c a d o s ( c o n s t s t r i n g &a t r i b u t o , V a l o r B a s e ∗ c o n s t novoValor ) ; s u b s t i t u a I n t e r v a l o s ( c o n s t s t r i n g &a t r i b u t o , V a l o r B a s e ∗ c o n s t n o v o V a l o r , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , c o n s t b o o l missingsTmb , c o n s t b o o l i n v a l i d o s T m b ) ; s u b s t i t u a M i s s i n g s D P ( c o n s t s t r i n g &a t r i b u t o , c o n s t D i s t r i b u i c a o & distribuicao ) ; s u b s t i t u a T o d o s D P ( c o n s t s t r i n g &a t r i b u t o , c o n s t D i s t r i b u i c a o & distribuicao ) ; s u b s t i t u a I n v a l i d o s D P ( c o n s t s t r i n g &a t r i b u t o , c o n s t D i s t r i b u i c a o & distribuicao ) ; s u b s t i t u a I n t e r v a l o D P ( c o n s t s t r i n g &a t r i b u t o , c o n s t D i s t r i b u i c a o & d i s t r i b u i c a o , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > & i n t e r v a l o s , c o n s t b o o l missingsTmb , c o n s t b o o l i n v a l i d o s T m b ) ; s u b s t i t u a D e s t a c a d o s D P ( c o n s t s t r i n g &a t r i b u t o , c o n s t D i s t r i b u i c a o & distribuicao ) ; s u b s t i t u a M i s s i n g s R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g & a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o ) ; s u b s t i t u a T o d o s R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g & a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o ) ; s u b s t i t u a I n v a l i d o s R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g & a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o ) ; s u b s t i t u a I n t e r v a l o R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g & a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , c o n s t b o o l missingsTmb , const bool invalidosTmb ) ; s u b s t i t u a D e s t a c a d o s R L S ( c o n s t s t r i n g &a t r i b u t o D e p , c o n s t s t r i n g & a t r i b u t o I n d , c o n s t R e g r e s s a o L i n e a r S i m p l e s &r e g r e s s a o ) ; s u b s t i t u a L o c a l i z a d o s ( c o n s t s t r i n g &a t r i b u t o , c o n s t v e c t o r < V a l o r B a s e ∗ c o n s t > &a n t i g o s V a l o r e s , V a l o r B a s e ∗ c o n s t n o v o V a l o r , c o n s t b o o l missingsTmb , c o n s t b o o l i n v a l i d o s T m b ) ; gerarValorDPDialog ( ) ; gerarLinhaDPDialog ( ) ; gerarColunaDPDialog ( ) ; gerarValorRLSDialog ( ) ; gerarLinhaRLSDialog ( ) ; gerarColunaRLSDialog ( ) ; void p o p u l a r L i n h a D P ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <c o n s t D i s t r i b u i c a o > &d i s t r i b u i c o e s ) ; popularColunaDP ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r < c o n s t D i s t r i b u i c a o > &d i s t r i b u i c o e s ) ; v o i d p o p u l a r L i n h a R L S ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s I n d e p , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s D e p , c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s > &r e g r e s s o e s ) ; v o i d p o p u l a r C o l u n a R L S ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s I n d e p , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s D e p , c o n s t v e c t o r <c o n s t R e g r e s s a o L i n e a r S i m p l e s > &r e g r e s s o e s ) ; void 133 } ; 134 135 #e n d i f // WIDGET TABELA EDITORA H Listagem B.103: widget tabela editora.h 1 <?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?> 2 <u i v e r s i o n=” 4 . 0 ”> 3 <c l a s s >W i d g e t T a b e l a E d i t o r a </ c l a s s > 4 <w i d g e t c l a s s =” QWidget ” name=” W i d g e t T a b e l a E d i t o r a ”> 5 <p r o p e r t y name=” g e o m e t r y ”> 311 6 <r e c t > 7 <x>0</x> 8 <y>0</y> 9 <width >598</width> 10 <h e i g h t >465</ h e i g h t > 11 </ r e c t > 12 </ p r o p e r t y > 13 <p r o p e r t y name=” w i n d o w T i t l e ”> 14 <s t r i n g >W i d g e t T a b e l a E d i t o r a </ s t r i n g > 15 </ p r o p e r t y > 16 <l a y o u t c l a s s =” QVBoxLayout ” name=” v e r t i c a l L a y o u t ”> 17 <i t e m> 18 <s p a c e r name=” v e r t i c a l S p a c e r ”> 19 <p r o p e r t y name=” o r i e n t a t i o n ”> 20 <enum>Qt : : V e r t i c a l </enum> 21 </ p r o p e r t y > 22 <p r o p e r t y name=” s i z e T y p e ”> 23 <enum>Q S i z e P o l i c y : : Minimum</enum> 24 </ p r o p e r t y > 25 <p r o p e r t y name=” s i z e H i n t ” s t d s e t=” 0 ”> 26 <s i z e > 27 <width >20</width> 28 <h e i g h t >35</ h e i g h t > 29 </ s i z e > 30 </ p r o p e r t y > 31 </ s p a c e r > 32 </i t e m> 33 <i t e m> 34 <w i d g e t c l a s s =” QTableView ” name=” t a b l e V i e w E d i c a o ”/> 35 </i t e m> 36 <i t e m> 37 <w i d g e t c l a s s =” Q P r o g r e s s B a r ” name=” p r o g r e s s B a r ”> 38 <p r o p e r t y name=” v a l u e ”> 39 <number>24</number> 40 </ p r o p e r t y > 41 </w i d g e t > 42 </i t e m> 43 </ l a y o u t > 44 </w i d g e t > 45 < l a y o u t d e f a u l t s p a c i n g=” 6 ” m a r g i n=” 11 ”/> 46 < r e s o u r c e s /> 47 <c o n n e c t i o n s /> 48 </u i > Listagem B.104: widget tabela editora.ui B.2 SUBPROJETO LIB ANALISE TRATAMENTO 1 ı̈¿<?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=” u t f −8”?> 2 <P r o j e c t D e f a u l t T a r g e t s=” B u i l d ” T o o l s V e r s i o n=” 4 . 0 ” xmlns=” h t t p : / / s c h e m a s . m i c r o s o f t . com/ d e v e l o p e r / m s b u i l d / 2 0 0 3 ”> 3 <ItemGroup L a b e l=” P r o j e c t C o n f i g u r a t i o n s ”> 4 <P r o j e c t C o n f i g u r a t i o n I n c l u d e=” Debug | Win32 ”> 5 <C o n f i g u r a t i o n >Debug</ C o n f i g u r a t i o n > 6 <P l a t f o r m >Win32</P l a t f o r m > 7 </ P r o j e c t C o n f i g u r a t i o n > 8 <P r o j e c t C o n f i g u r a t i o n I n c l u d e=” R e l e a s e | Win32 ”> 9 <C o n f i g u r a t i o n >R e l e a s e </ C o n f i g u r a t i o n > 10 <P l a t f o r m >Win32</P l a t f o r m > 11 </ P r o j e c t C o n f i g u r a t i o n > 12 </ItemGroup> 13 <ItemGroup> 14 <C l I n c l u d e I n c l u d e=” d i s t r i b u i c a o c o n t r o l e . h ” /> 15 <C l I n c l u d e I n c l u d e=” e n u m s a t . h ” /> 16 <C l I n c l u d e I n c l u d e=” g e r a d o r d i s t r i b u i c o e s . h ” /> 17 <C l I n c l u d e I n c l u d e=” r e g r e s s a o l i n e a r s i m p l e s . h ” /> 18 <C l I n c l u d e I n c l u d e=” v a l o r b a s e . h ” /> 19 <C l I n c l u d e I n c l u d e=” v a l o r q u a l i t a t i v o . h ” /> 20 <C l I n c l u d e I n c l u d e=” v a l o r q u a n t i t a t i v o . h ” /> 21 <C l I n c l u d e I n c l u d e=” c o l e t o r e s t a t i s t i c a s . h ” /> 22 <C l I n c l u d e I n c l u d e=” g e r a d o r g r a f i c o s . h ” /> 23 <C l I n c l u d e I n c l u d e=” r e g i s t r o . h ” /> 24 <C l I n c l u d e I n c l u d e=” t a b e l a r e g i s t r o s . h ” /> 25 </ItemGroup> 312 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 <ItemGroup> <C l C o m p i l e I n c l u d e=” d i s t r i b u i c a o c o n t r o l e . cpp ” /> <C l C o m p i l e I n c l u d e=” g e r a d o r d i s t r i b u i c o e s . cpp ” /> <C l C o m p i l e I n c l u d e=” r e g r e s s a o l i n e a r s i m p l e s . cpp ” /> <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s g e t s e t r e g i s t r o s . cpp ” /> <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s g e t v a l o r e s . cpp ” /> <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s i d e n t i f i c a d o r . cpp ” /> <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s p o p u l a d o r . cpp ” /> <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s r e m o v e d o r . cpp ” /> <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s s u b s t i t u i d o r . cpp ” /> <C l C o m p i l e I n c l u d e=” v a l o r q u a l i t a t i v o . cpp ” /> <C l C o m p i l e I n c l u d e=” v a l o r q u a n t i t a t i v o . cpp ” /> <C l C o m p i l e I n c l u d e=” c o l e t o r e s t a t i s t i c a s . cpp ” /> <C l C o m p i l e I n c l u d e=” g e r a d o r g r a f i c o s . cpp ” /> <C l C o m p i l e I n c l u d e=” r e g i s t r o . cpp ” /> <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s . cpp ” /> </ItemGroup> <ItemGroup> <P r o j e c t R e f e r e n c e I n c l u d e=” . . \ l i b f i t \ l i b f i t . v c x p r o j ”> <P r o j e c t >{7 c c 8 e 7 f d −d035 −45e8−ad6a−2e 1 b 5 d d 9 c 0 d c }</ P r o j e c t > </ P r o j e c t R e f e r e n c e > </ItemGroup> <P r o p e r t y G r o u p L a b e l=” G l o b a l s ”> <P r o j e c t G u i d >{E16D1D59−22F4−4120−947F−C78AC48714BD}</ P r o j e c t G u i d > <Keyword>Qt4VSv1 .0 </ Keyword> </P r o p e r t y G r o u p> <I m p o r t P r o j e c t=” $ ( VCTargetsPath ) \ M i c r o s o f t . Cpp . D e f a u l t . p r o p s ” /> <P r o p e r t y G r o u p C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” L a b e l=” C o n f i g u r a t i o n ”> <C o n f i g u r a t i o n T y p e >S t a t i c L i b r a r y </C o n f i g u r a t i o n T y p e > </P r o p e r t y G r o u p> <P r o p e r t y G r o u p C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” L a b e l=” C o n f i g u r a t i o n ”> <C o n f i g u r a t i o n T y p e >S t a t i c L i b r a r y </C o n f i g u r a t i o n T y p e > </P r o p e r t y G r o u p> <I m p o r t P r o j e c t=” $ ( VCTargetsPath ) \ M i c r o s o f t . Cpp . p r o p s ” /> <ImportGroup L a b e l=” E x t e n s i o n S e t t i n g s ”> </ImportGroup> <ImportGroup C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” L a b e l=” P r o p e r t y S h e e t s ”> <I m p o r t P r o j e c t=” $ ( U s e r R o o t D i r ) \ M i c r o s o f t . Cpp . $ ( P l a t f o r m ) . u s e r . p r o p s ” C o n d i t i o n=” e x i s t s ( ’ $ ( U s e r R o o t D i r ) \ M i c r o s o f t . Cpp . $ ( P l a t f o r m ) . u s e r . p r o p s ’ ) ” L a b e l=” L o c a l A p p D a t a P l a t f o r m ” /> </ImportGroup> <ImportGroup C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” L a b e l=” P r o p e r t y S h e e t s ”> <I m p o r t P r o j e c t=” $ ( U s e r R o o t D i r ) \ M i c r o s o f t . Cpp . $ ( P l a t f o r m ) . u s e r . p r o p s ” C o n d i t i o n=” e x i s t s ( ’ $ ( U s e r R o o t D i r ) \ M i c r o s o f t . Cpp . $ ( P l a t f o r m ) . u s e r . p r o p s ’ ) ” L a b e l=” L o c a l A p p D a t a P l a t f o r m ” /> </ImportGroup> <P r o p e r t y G r o u p L a b e l=” U s e r M a c r o s ” /> <P r o p e r t y G r o u p> < P r o j e c t F i l e V e r s i o n >10.0.30319.1 </ P r o j e c t F i l e V e r s i o n > <C o d e A n a l y s i s R u l e S e t C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>A l l R u l e s . r u l e s e t </C o d e A n a l y s i s R u l e S e t > <C o d e A n a l y s i s R u l e s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” /> <C o d e A n a l y s i s R u l e A s s e m b l i e s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ” /> <C o d e A n a l y s i s R u l e S e t C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>A l l R u l e s . r u l e s e t </C o d e A n a l y s i s R u l e S e t > <C o d e A n a l y s i s R u l e s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” /> <C o d e A n a l y s i s R u l e A s s e m b l i e s C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ” /> <OutDir C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”>$ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n ) \</OutDir> <OutDir C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”>$ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n ) \</OutDir> </P r o p e r t y G r o u p> <I t e m D e f i n i t i o n G r o u p C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ Debug | Win32 ’ ”> <ClCompile> <P r e p r o c e s s o r D e f i n i t i o n s >UNICODE ; WIN32 ; QT DLL ; TCC RODOLFO ; LIB ANALISE TRATAMENTO LIB ; QT WIDGETS LIB ; QT CORE LIB; % ( P r e p r o c e s s o r D e f i n i t i o n s )</ P r e p r o c e s s o r D e f i n i t i o n s > <A d d i t i o n a l I n c l u d e D i r e c t o r i e s > . ; . \ G e n e r a t e d F i l e s ; . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) ; $ (QTDIR) \ i n c l u d e ; . . \ l i b u t i l i d a d e s ; . . \ l i b f i t \ i n c l u d e s ; $ (QTDIR) \ i n c l u d e \ QtWidgets ; $ (QTDIR) \ i n c l u d e \ QtCore ; % ( A d d i t i o n a l I n c l u d e D i r e c t o r i e s )</ A d d i t i o n a l I n c l u d e D i r e c t o r i e s > <O p t i m i z a t i o n >D i s a b l e d </O p t i m i z a t i o n > <D e b u g I n f o r m a t i o n F o r m a t>ProgramDatabase </D e b u g I n f o r m a t i o n F o r m a t> 313 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 <R u n t i m e L i b r a r y>MultiThreadedDebugDLL </R u n t i m e L i b r a r y> <T r e a t W C h a r t A s B u i l t I n T y p e>f a l s e </T r e a t W C h a r t A s B u i l t I n T y p e> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <O u t p u t F i l e >$ ( OutDir ) \ $ ( P r o j e c t N a m e ) . d l l </O u t p u t F i l e > <A d d i t i o n a l L i b r a r y D i r e c t o r i e s >$ (QTDIR) \ l i b ; $ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n ) \;%( A d d i t i o n a l L i b r a r y D i r e c t o r i e s )</ AdditionalLibraryDirectories> <G e n e r a t e D e b u g I n f o r m a t i o n >t r u e </G e n e r a t e D e b u g I n f o r m a t i o n > <A d d i t i o n a l D e p e n d e n c i e s >qtmaind . l i b ; Qt5Cored . l i b ; % ( A d d i t i o n a l D e p e n d e n c i e s ) ; l i b u t i l i d a d e s . l i b </ AdditionalDependencies> </Link> <Lib> <A d d i t i o n a l D e p e n d e n c i e s > l i b u t i l i d a d e s . l i b ; l i b f i t . l i b ; % ( A d d i t i o n a l D e p e n d e n c i e s )</ A d d i t i o n a l D e p e n d e n c i e s > </Lib> <Lib> <A d d i t i o n a l L i b r a r y D i r e c t o r i e s >$ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n ) ; % ( A d d i t i o n a l L i b r a r y D i r e c t o r i e s )</ AdditionalLibraryDirectories> </Lib> </ I t e m D e f i n i t i o n G r o u p > <I t e m D e f i n i t i o n G r o u p C o n d i t i o n=” ’ $ ( C o n f i g u r a t i o n ) | $ ( P l a t f o r m ) ’== ’ R e l e a s e | Win32 ’ ”> <ClCompile> <P r e p r o c e s s o r D e f i n i t i o n s >UNICODE ; WIN32 ; QT DLL ; TCC RODOLFO ; QT NO DEBUG ;NDEBUG; LIB ANALISE TRATAMENTO LIB ; QT WIDGETS LIB ; QT CORE LIB; % ( P r e p r o c e s s o r D e f i n i t i o n s )</ P r e p r o c e s s o r D e f i n i t i o n s > <A d d i t i o n a l I n c l u d e D i r e c t o r i e s > . ; . \ G e n e r a t e d F i l e s ; . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) ; $ (QTDIR) \ i n c l u d e ; . . \ l i b u t i l i d a d e s ; . . \ l i b f i t \ i n c l u d e s ; $ (QTDIR) \ i n c l u d e \ QtWidgets ; $ (QTDIR) \ i n c l u d e \ QtCore ; % ( A d d i t i o n a l I n c l u d e D i r e c t o r i e s )</ A d d i t i o n a l I n c l u d e D i r e c t o r i e s > <D e b u g I n f o r m a t i o n F o r m a t> </D e b u g I n f o r m a t i o n F o r m a t> <R u n t i m e L i b r a r y>MultiThreadedDLL </R u n t i m e L i b r a r y> <T r e a t W C h a r t A s B u i l t I n T y p e>f a l s e </T r e a t W C h a r t A s B u i l t I n T y p e> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <O u t p u t F i l e >$ ( OutDir ) \ $ ( P r o j e c t N a m e ) . d l l </O u t p u t F i l e > <A d d i t i o n a l L i b r a r y D i r e c t o r i e s >$ (QTDIR) \ l i b ; $ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n ) \;%( A d d i t i o n a l L i b r a r y D i r e c t o r i e s )</ AdditionalLibraryDirectories> <G e n e r a t e D e b u g I n f o r m a t i o n >f a l s e </G e n e r a t e D e b u g I n f o r m a t i o n > <A d d i t i o n a l D e p e n d e n c i e s >q t m a i n . l i b ; Qt5Core . l i b ; % ( A d d i t i o n a l D e p e n d e n c i e s ) ; l i b u t i l i d a d e s . l i b </ AdditionalDependencies> </Link> <Lib> <A d d i t i o n a l D e p e n d e n c i e s > l i b u t i l i d a d e s . l i b ; l i b f i t . l i b ; % ( A d d i t i o n a l D e p e n d e n c i e s )</ A d d i t i o n a l D e p e n d e n c i e s > </Lib> <Lib> <A d d i t i o n a l L i b r a r y D i r e c t o r i e s >$ ( S o l u t i o n D i r ) $ ( P l a t f o r m ) \ $ ( C o n f i g u r a t i o n ) ; % ( A d d i t i o n a l L i b r a r y D i r e c t o r i e s )</ AdditionalLibraryDirectories> </Lib> </ I t e m D e f i n i t i o n G r o u p > <I m p o r t P r o j e c t=” $ ( VCTargetsPath ) \ M i c r o s o f t . Cpp . t a r g e t s ” /> <ImportGroup L a b e l=” E x t e n s i o n T a r g e t s ”> </ImportGroup> <P r o j e c t E x t e n s i o n s > <V i s u a l S t u d i o > <U s e r P r o p e r t i e s U i c D i r=” . \ G e n e r a t e d F i l e s ” MocDir=” . \ G e n e r a t e d F i l e s \ $ ( C o n f i g u r a t i o n N a m e ) ” MocOptions=” ” R c c D i r=” . \ G e n e r a t e d F i l e s ” l u p d a t e O n B u i l d=” 0 ” l u p d a t e O p t i o n s=” ” l r e l e a s e O p t i o n s=” ” Q t 5 V e r s i o n x 0 0 2 0 W i n 3 2=” m s v c 2 0 1 0 o p e n g l ” /> </ V i s u a l S t u d i o > </ P r o j e c t E x t e n s i o n s > </ P r o j e c t > Listagem B.105: lib analise tratamento.vcxproj 1 ı̈¿<?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=” u t f −8”?> 2 <P r o j e c t T o o l s V e r s i o n=” 4 . 0 ” xmlns=” h t t p : / / s c h e m a s . m i c r o s o f t . com/ d e v e l o p e r / m s b u i l d / 2 0 0 3 ”> 3 <ItemGroup> 314 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 < F i l t e r I n c l u d e=” S o u r c e F i l e s ”> <U n i q u e I d e n t i f i e r >{4FC737F1−C7A5−4376−A066−2A32D752A2FF}</ UniqueIdentifier> <E x t e n s i o n s >cpp ; c x x ; c ; d e f </ E x t e n s i o n s > </ F i l t e r > < F i l t e r I n c l u d e=” H e a d e r F i l e s ”> <U n i q u e I d e n t i f i e r >{93995380 −89BD−4b04 −88EB−625FBE52EBFB}</ UniqueIdentifier> <E x t e n s i o n s >h</ E x t e n s i o n s > </ F i l t e r > < F i l t e r I n c l u d e=”Form F i l e s ”> <U n i q u e I d e n t i f i e r >{99349809 −55BA−4b9d−BF79−8FDBB0286EB3}</ UniqueIdentifier> <E x t e n s i o n s >u i </ E x t e n s i o n s > </ F i l t e r > < F i l t e r I n c l u d e=” R e s o u r c e F i l e s ”> <U n i q u e I d e n t i f i e r >{D9D6E242−F8AF−46E4−B9FD−80ECBC20BA3E}</ UniqueIdentifier> <E x t e n s i o n s >q r c ;∗ </ E x t e n s i o n s > <P a r s e F i l e s >f a l s e </ P a r s e F i l e s > </ F i l t e r > < F i l t e r I n c l u d e=” G e n e r a t e d F i l e s ”> <U n i q u e I d e n t i f i e r >{71ED8ED8−ACB9−4CE9−BBE1−E00B30144E11}</ UniqueIdentifier> <E x t e n s i o n s >moc ; h ; cpp</ E x t e n s i o n s > <S o u r c e C o n t r o l F i l e s >F a l s e </ S o u r c e C o n t r o l F i l e s > </ F i l t e r > </ItemGroup> <ItemGroup> <C l I n c l u d e I n c l u d e=” c o l e t o r e s t a t i s t i c a s . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” r e g i s t r o . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” t a b e l a r e g i s t r o s . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” g e r a d o r g r a f i c o s . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” v a l o r b a s e . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” v a l o r q u a l i t a t i v o . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” v a l o r q u a n t i t a t i v o . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” g e r a d o r d i s t r i b u i c o e s . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” d i s t r i b u i c a o c o n t r o l e . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” r e g r e s s a o l i n e a r s i m p l e s . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > <C l I n c l u d e I n c l u d e=” e n u m s a t . h ”> < F i l t e r >H e a d e r F i l e s </ F i l t e r > </ C l I n c l u d e > </ItemGroup> <ItemGroup> <C l C o m p i l e I n c l u d e=” c o l e t o r e s t a t i s t i c a s . cpp ”> < F i l t e r >S o u r c e F i l e s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s . cpp ”> < F i l t e r >S o u r c e F i l e s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” g e r a d o r g r a f i c o s . cpp ”> < F i l t e r >S o u r c e F i l e s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” r e g i s t r o . cpp ”> < F i l t e r >S o u r c e F i l e s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” v a l o r q u a l i t a t i v o . cpp ”> < F i l t e r >S o u r c e F i l e s </ F i l t e r > </ClCompile> <C l C o m p i l e I n c l u d e=” v a l o r q u a n t i t a t i v o . cpp ”> < F i l t e r >S o u r c e F i l e s </ F i l t e r > </ClCompile> 315 81 <C l C o m p i l e I n c l u d e=” g e r a d o r d i s t r i b u i c o e s . cpp ”> 82 < F i l t e r >S o u r c e F i l e s </ F i l t e r > 83 </ClCompile> 84 <C l C o m p i l e I n c l u d e=” d i s t r i b u i c a o c o n t r o l e . cpp ”> 85 < F i l t e r >S o u r c e F i l e s </ F i l t e r > 86 </ClCompile> 87 <C l C o m p i l e I n c l u d e=” r e g r e s s a o l i n e a r s i m p l e s . cpp ”> 88 < F i l t e r >S o u r c e F i l e s </ F i l t e r > 89 </ClCompile> 90 <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s g e t v a l o r e s . cpp ”> 91 < F i l t e r >S o u r c e F i l e s </ F i l t e r > 92 </ClCompile> 93 <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s g e t s e t r e g i s t r o s . cpp ”> 94 < F i l t e r >S o u r c e F i l e s </ F i l t e r > 95 </ClCompile> 96 <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s p o p u l a d o r . cpp ”> 97 < F i l t e r >S o u r c e F i l e s </ F i l t e r > 98 </ClCompile> 99 <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s i d e n t i f i c a d o r . cpp ”> 100 < F i l t e r >S o u r c e F i l e s </ F i l t e r > 101 </ClCompile> 102 <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s r e m o v e d o r . cpp ”> 103 < F i l t e r >S o u r c e F i l e s </ F i l t e r > 104 </ClCompile> 105 <C l C o m p i l e I n c l u d e=” t a b e l a r e g i s t r o s s u b s t i t u i d o r . cpp ”> 106 < F i l t e r >S o u r c e F i l e s </ F i l t e r > 107 </ClCompile> 108 </ItemGroup> 109 </ P r o j e c t > Listagem B.106: lib analise tratamento.vcxproj.filters 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #i n c l u d e #i n c l u d e ” c o l e t o r e s t a t i s t i c a s . h” ” u t i l i d a d e s . h” #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <a l g o r i t h m > <cmath> <c a s s e r t > <a l g o r i t h m > <math . h> ColetorEstatisticas const const const const double double double double ∗ C o l e t o r E s t a t i s t i c a s : : i n s t a n c i a = NULL ; ColetorEstatisticas ColetorEstatisticas ColetorEstatisticas ColetorEstatisticas :: :: :: :: FATOR WISKER SUPERIOR = 1 . 5 ; FATOR WISKER INFEIROR = 1 . 5 ; ZMIN = − 2 . 5 ; ZMAX = 2 . 5 ; ColetorEstatisticas ∗ ColetorEstatisticas : : obterInstancia () { i f (! instancia ) { i n s t a n c i a = new C o l e t o r E s t a t i s t i c a s ( ) ; } return instancia ; } void { ColetorEstatisticas : : destruirInstancia () if { ( instancia ) delete instancia ; } i n s t a n c i a = NULL ; } ColetorEstatisticas : : ˜ ColetorEstatisticas () { estatisticasGerais . clear () ; estatisticasQualitativos . clear () ; frequenciasQuali . clear () ; frequenciasQuantDisc . clear () ; frequenciasQuantCont . c l e a r () ; } void ColetorEstatisticas : : coletarEstatisticasDosAtributos ( c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , ThreadWorker ∗ t h r e a d ) 316 48 49 { const s i z e t t o t a l A t r i b u t o s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> totalAtributos () ; s i z e t i = 0; 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 for ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . c b e g i n ( ) ; c i t A t r i b u t o != a t r i b u t o s . c e n d ( ) ; c i t A t r i b u t o ++, i ++) { coletarEstatisticasDoAtributo ( atributos [ i ]) ; if { ( thread ) i n t ∗ p o r c e n t a g e m = new i n t ( min ( ( i n t ) ( ( i + 1 ) ∗ t o t a l A t r i b u t o s ∗ 50 + 5 0 ) , 9 9 ) ) ; t h r e a d−>N o t i f i c a r ( p o r c e n t a g e m ) ; 1.0 / } } } void C o l e t o r E s t a t i s t i c a s : : coletarEstatisticasDoAtributo ( const atributo ) string & { int int int missings = 0; distintos = 0; unicos = 0 ; v e c t o r <V a l o r B a s e ∗ c o n s t > v a l o r e s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>v a l o r e s A t r i b u t o ( a t r i b u t o , ; if { valores ) ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>ehQuant ( a t r i b u t o ) ) double double s o m a V a l o r = 0 ; // p a r a somaDesvioPadrao = 0 ; c a l c u l o media // p a r a c a l c u l o desvio padrao d o u b l e media = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; d o u b l e maximo = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; d o u b l e w h i s k e r S u p e r i o r D i a g r a m a C a i x a = n u m e r i c l i m i t s <d o u b l e > : : quiet NaN ( ) ; d o u b l e q u a r t i l S u p e r i o r = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; d o u b l e mediana = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; d o u b l e q u a r t i l I n f e r i o r = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; d o u b l e w h i s k e r I n f e r i o r D i a g r a m a C a i x a = n u m e r i c l i m i t s <d o u b l e > : : quiet NaN ( ) ; d o u b l e minimo = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; v e c t o r <d o u b l e > o u t l i e r s D i a g r a m a C a i x a = v e c t o r <d o u b l e >() ; v e c t o r <d o u b l e > o u t l i e r s Z S c o r e = v e c t o r <d o u b l e >() ; d o u b l e d e s v i o P a d r a o = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; d o u b l e c o e f i c i e n t e V a r i a c a o = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; d o u b l e a m p l i t u d e = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; d o u b l e d e s v i o I n t e r q u a r t i l i c o = n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; int totalValoresInvalidosOuMissings = 0; int totalValoresValidos = 0; frequenciasQuantDisc [ atributo ] = FrequenciasQuantDiscreto () ; F r e q u e n c i a s Q u a n t D i s c r e t o &f r e q Q u a n t V a l o r = frequenciasQuantDisc [ atributo ] ; frequenciasQuantCont [ a t r i b u t o ] = FrequenciasQuantContinuo ( ) ; frequenciasQuantCont [ F r e q u e n c i a s Q u a n t C o n t i n u o &f r e q Q u a n t C l a s s e = atributo ] ; // c o n t a n d o m i s s i n g s e i n v a l i d o s v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > v a l o r e s Q u a n t O r d e n a d o s = v e c t o r < V a l o r Q u a n t i t a t i v o ∗ c o n s t >() ; valoresQuantOrdenados . r e s e r v e ( v a l o r e s . s i z e ( ) ) ; f o r ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r c i t V a l o r = v a l o r e s . cbegin () ; c i t V a l o r != v a l o r e s . c e n d ( ) ; c i t V a l o r ++) { V a l o r Q u a n t i t a t i v o ∗ c o n s t v a l o r = d y n a m i c c a s t <V a l o r Q u a n t i t a t i v o ∗ c o n s t >(∗ c i t V a l o r ) ; if { ( v a l o r −>m i s s i n g ( ) ) t o t a l V a l o r e s I n v a l i d o s O u M i s s i n g s ++; m i s s i n g s ++; continue ; } else if ( ! v a l o r −>f o r m a t o V a l i d o ( ) ) 317 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 { t o t a l V a l o r e s I n v a l i d o s O u M i s s i n g s ++; continue ; } t o t a l V a l o r e s V a l i d o s ++; valoresQuantOrdenados . push back ( v a l o r ) ; } if { ( t o t a l V a l o r e s V a l i d o s > 0) minimo = n u m e r i c l i m i t s <d o u b l e > : : max ( ) ; // min começa s e n d o uma v a l o r grande ; maximo = −1∗ n u m e r i c l i m i t s <d o u b l e > : : max ( ) ; //max começa s e n d o uma v a l o r p e q u e n o ; // o r d e n a r o v e t o r , n e c e s s a r i o p a r a c a l c u l o d o s q u a r t i s s o r t ( v a l o r e s Q u a n t O r d e n a d o s . b e g i n ( ) , v a l o r e s Q u a n t O r d e n a d o s . end ( ) , c o m p a r e P o i n t e d V a l u e L T<V a l o r Q u a n t i t a t i v o >) ; for ( v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > : : c o n s t i t e r a t o r = valoresQuantOrdenados . cbegin ( ) ; c i t V a l o r != v a l o r e s Q u a n t O r d e n a d o s . c e n d ( ) ; c i t V a l o r ++) citValor { ValorQuantitativo const double ∗const valor = ∗citValor ; v a l o r D b l = v a l o r −>v a l o r D b l ( ) ; // c a s o nao t e n h a a i n d a a f r e q u e n c i a p a r a i f ( f r e q Q u a n t V a l o r . c o u n t ( v a l o r D b l ) == 0 ) { freqQuantValor [ valorDbl ] = 0 ; } valor f r e q Q u a n t V a l o r [ v a l o r D b l ]++; // min , max i f ( v a l o r D b l < minimo ) { minimo = v a l o r D b l ; } i f ( v a l o r D b l > maximo ) // nao pode s ó um v a l o r e l e é max e min { maximo = v a l o r D b l ; } ser else if , caso tenho // p a r a c a l c u l o da media s o m a V a l o r += v a l o r D b l ; } d i s t i n t o s = freqQuantValor . s i z e ( ) ; u n i c o s = contaUnicosQuant ( a t r i b u t o ) ; media = s o m a V a l o r / totalValoresValidos ; q u a r t i l S u p e r i o r = t h i s −>q u a r t i l S u p e r i o r ( v a l o r e s Q u a n t O r d e n a d o s , totalValoresValidos ) ; mediana = t h i s −>mediana ( v a l o r e s Q u a n t O r d e n a d o s , totalValoresValidos ) ; q u a r t i l I n f e r i o r = t h i s −>q u a r t i l I n f e r i o r ( v a l o r e s Q u a n t O r d e n a d o s , totalValoresValidos ) ; desvioInterquartilico = quartilSuperior − quartilInferior ; w h i s k e r S u p e r i o r D i a g r a m a C a i x a = min ( q u a r t i l S u p e r i o r + FATOR WISKER SUPERIOR ∗ d e s v i o I n t e r q u a r t i l i c o , maximo ) ; w h i s k e r I n f e r i o r D i a g r a m a C a i x a = max ( q u a r t i l I n f e r i o r − FATOR WISKER INFEIROR ∗ d e s v i o I n t e r q u a r t i l i c o , minimo ) ; // p a r t e do c a l c u l o do d e s v i o p a d r a o f o r ( v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > : : c o n s t i t e r a t o r = valoresQuantOrdenados . cbegin ( ) ; c i t V a l o r != v a l o r e s Q u a n t O r d e n a d o s . c e n d ( ) ; c i t V a l o r ++) { ValorQuantitativo ∗const valor = ∗ citValor ; c o n s t d o u b l e v a l o r D b l = v a l o r −>v a l o r D b l ( ) ; citValor // ( x − u ) ˆ2 s o m a D e s v i o P a d r a o += ( v a l o r D b l − media ) ∗ ( v a l o r D b l − media ) ; } 318 190 191 192 d e s v i o P a d r a o = s q r t ( somaDesvioPadrao / t o t a l V a l o r e s V a l i d o s ) ; c o e f i c i e n t e V a r i a c a o = ( media != 0 ) ? d e s v i o P a d r a o / media : coeficienteVariacao ; a m p l i t u d e = maximo − minimo ; 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 // d i s t r i b u i ç ã o de f r e q u e n c i a s p o r c l a s s e s double h ; int k ; i f ( t o t a l V a l o r e s V a l i d o s > 200) { // S c o t t h = hScott ( totalValoresValidos , desvioPadrao ) ; k = kDeH ( maximo , minimo , h ) ; } else { // S t u r g e s k = kSturges ( totalValoresValidos ) ; h = hDeK ( maximo , minimo , k ) ; } // s e t i v e r p o u c a s c l a s s e s ou m u i t a s c o l o c a i f ( k < 3 && h != 0 ) { k = min ( 3 , t o t a l V a l o r e s V a l i d o s ) ; h = hDeK ( maximo , minimo , k ) ; } e l s e i f ( k > 25 && h != 0 ) { k = 25; h = hDeK ( maximo , minimo , k ) ; } // C o n s t r u ç ã o d a s c l a s s e s d o u b l e x1 = minimo ; f o r ( i n t i = 0 ; i < k ; i ++) { d o u b l e x2 = x1 + h ; i f ( i == ( k − 1 ) ) { x2 = maximo ; } f r e q Q u a n t C l a s s e [ C l a s s e Q u a n t ( x1 , x1 = x2 ; } entre 3 e 25 x2 ) ] = 0 ; // Contagem d a s c l a s s e s e d e t e c a o de o u t l i e r s f o r ( v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > : : c o n s t i t e r a t o r = valoresQuantOrdenados . cbegin ( ) ; c i t V a l o r != v a l o r e s Q u a n t O r d e n a d o s . c e n d ( ) ; c i t V a l o r ++) { ValorQuantitativo ∗const valor = ∗ citValor ; c o n s t d o u b l e v a l o r D b l = v a l o r −>v a l o r D b l ( ) ; 238 239 240 241 242 243 244 citValor FrequenciasQuantContinuo : : i t e r a t o r i t C l a s s e = freqQuantClasse . begin () ; w h i l e ( ! p e r t e n c e A C l a s s e ( v a l o r D b l , i t C l a s s e −> f i r s t ) ) { i t C l a s s e ++; } ( i t C l a s s e −>s e c o n d ) ++; 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 sempre // o u t l i e r s d i a g r a m a de c a i x a i f ( valorDbl > whiskerSuperiorDiagramaCaixa | | whiskerInferiorDiagramaCaixa ) { outliersDiagramaCaixa . push back ( valorDbl ) ; } valorDbl < // o u t l i r e s z s c o r e c o n s t d o u b l e z = ( v a l o r D b l − media ) / d e s v i o P a d r a o ; i f ( z > ZMAX | | z < ZMIN ) { o u t l i e r s Z S c o r e . push back ( valorDbl ) ; } } } e s t a t i s t i c a s Q u a l i t a t i v o s [ atributo ] = EstatisticaQuant () ; E s t a t i s t i c a Q u a n t &e s t a t i s t i c a Q u a n t = estatisticasQualitativos [ 319 atributo ] ; e s t a t i s t i c a Q u a n t . media = media ; e s t a t i s t i c a Q u a n t . maximo = maximo ; e s t a t i s t i c a Q u a n t . whiskerSuperiorDiagramaCaixa = whiskerSuperiorDiagramaCaixa ; estatisticaQuant . quartilSuperior = quartilSuperior ; e s t a t i s t i c a Q u a n t . mediana = mediana ; estatisticaQuant . quartilInferior = quartilInferior ; estatisticaQuant . whiskerInferiorDiagramaCaixa = whiskerInferiorDiagramaCaixa ; e s t a t i s t i c a Q u a n t . minimo = minimo ; estatisticaQuant . outliersDiagramaCaixa = outliersDiagramaCaixa ; estatisticaQuant . outliersZScore = outliersZScore ; e s t a t i s t i c a Q u a n t . desvioPadrao = desvioPadrao ; estatisticaQuant . coeficienteVariacao = coeficienteVariacao ; e s t a t i s t i c a Q u a n t . amplitudeTotal = amplitude ; estatisticaQuant . desvioInterquartilico = desvioInterquartilico ; estatisticaQuant . totalValoresInvalidosOuMissings = totalValoresInvalidosOuMissings ; estatisticaQuant . totalValoresValidos = totalValoresValidos ; 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 } else { 289 290 291 292 293 294 295 296 297 298 299 300 301 302 if { ( v a l o r −>m i s s i n g ( ) ) m i s s i n g s ++; continue ; } v a l o r e s Q u a l i . p u s h b a c k ( d y n a m i c c a s t <V a l o r Q u a l i t a t i v o valor ) ) ; ∗ c o n s t >( } 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 //QUALITATIVA v e c t o r <V a l o r Q u a l i t a t i v o ∗ c o n s t > v a l o r e s Q u a l i = v e c t o r < V a l o r Q u a l i t a t i v o ∗ c o n s t >() ; valoresQuali . reserve ( valores . size () ) ; f o r ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r c i t V a l o r = v a l o r e s . cbegin () ; c i t V a l o r != v a l o r e s . c e n d ( ) ; c i t V a l o r ++) { ValorBase ∗ const v a l o r = ∗ c i t V a l o r ; frequenciasQuali [ atributo ] = FrequenciasQuali () ; F r e q u e n c i a s Q u a l i &f r e q Q u a l i = frequenciasQuali [ atributo ] ; for ( v e c t o r <V a l o r Q u a l i t a t i v o ∗ c o n s t > : : c o n s t i t e r a t o r valoresQuali . cbegin () ; c i t V a l o r != v a l o r e s Q u a l i . c e n d ( ) ; c i t V a l o r ++) citValor = { ValorQualitativo ∗const valor = ∗ citValor ; c o n s t s t r i n g &v a l o r S t r = v a l o r −>v a l o r S t r ( ) ; if { ( f r e q Q u a l i . c o u n t ( v a l o r S t r ) == 0 ) freqQuali [ valorStr ] = 0; } f r e q Q u a l i [ v a l o r S t r ]++; } distintos = freqQuali . size () ; unicos = contaUnicosQuali ( atributo ) ; } estatisticasGerais [ atributo ] = EstatisticaGeral () ; estatisticasGerais [ atributo ] ; E s t a t i s t i c a G e r a l &e s t a t i s t i c a G e r a l = estatisticaGeral . missings = missings ; estatisticaGeral . distintos = distintos ; e s t a t i s t i c a G e r a l . unicos = unicos ; } double C o l e t o r E s t a t i s t i c a s : : q u a r t i l I n f e r i o r ( c o n s t v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > &v a l o r e s Q u a n t O r d e n a d o s , const int n) const { i f ( ( n + 3 ) % 4 == 0 ) { r e t u r n v a l o r e s Q u a n t O r d e n a d o s [ ( ( n + 3 ) / 4 . 0 ) − 1]−> v a l o r D b l ( ) ; } 320 342 const double valorDbl double double valorDbl const double valorDbl 343 344 const const 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 return 405 406 407 408 409 410 411 412 413 f l o o r ( ( n + 3) 4 . 0 ) − 1]−> / 4 . 0 ) − 1]−> / / 4 . 0 ) − 1]−> ∗ ( fator2 − fator3 ) ; d o u b l e C o l e t o r E s t a t i s t i c a s : : mediana ( c o n s t v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > &v a l o r e s Q u a n t O r d e n a d o s , const int n) const { i f ( n % 2 != 0 ) { r e t u r n v a l o r e s Q u a n t O r d e n a d o s [ ( ( n + 1 ) / 2 . 0 ) − 1]−> v a l o r D b l ( ) ; } r e t u r n ( v a l o r e s Q u a n t O r d e n a d o s [ ( n / 2 . 0 ) − 1]−> v a l o r D b l ( ) + v a l o r e s Q u a n t O r d e n a d o s [ ( ( n + 2 ) / 2 . 0 ) − 1]−> v a l o r D b l ( ) ) / 2.0; } double C o l e t o r E s t a t i s t i c a s : : q u a r t i l S u p e r i o r ( c o n s t v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > &v a l o r e s Q u a n t O r d e n a d o s , const int n) const { i f ( ( ( 3 ∗ n ) + 1 ) % 4 == 0 ) { r e t u r n v a l o r e s Q u a n t O r d e n a d o s [ ( ( ( 3 ∗ n ) + 1 ) / 4 . 0 ) − 1]−> v a l o r D b l ( ) ; } const double f a t o r 1 = valoresQuantOrdenados [ f l o o r ( ( ( 3 ∗ n ) + 1) / 4 . 0 ) − 1]−> v a l o r D b l ( ) ; const double f a t o r I n t e r p o l a c a o = ( ( ( 3 ∗ n) + 1) % 4) / 4 . 0 ; const double f a t o r 2 = valoresQuantOrdenados [ c e i l ( ( ( 3 ∗ n ) + 1) / 4 . 0 ) − 1]−> v a l o r D b l ( ) ; const double f a t o r 3 = valoresQuantOrdenados [ f l o o r ( ( ( 3 ∗ n ) + 1) / 4 . 0 ) − 1]−> v a l o r D b l ( ) ; 374 402 403 404 fator1 + fatorInterpolacao f l o o r ( ( n + 3) 4) / 4 . 0 ; c e i l ( ( n + 3) } 372 373 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 f a t o r 1 = valoresQuantOrdenados [ () ; f a t o r I n t e r p o l a c a o = ( ( n + 3) % f a t o r 2 = valoresQuantOrdenados [ () ; f a t o r 3 = valoresQuantOrdenados [ () ; return fator1 + fatorInterpolacao ∗ ( fator2 − fator3 ) ; } int { C o l e t o r E s t a t i s t i c a s : : contaUnicosQuali ( const const int for F r e q u e n c i a s Q u a l i &f r e q u e n c i a s = unicos = 0; ( FrequenciasQuali : : c o n s t i t e r a t o r c i t F r e q != f r e q u e n c i a s . c e n d ( ) ; c i t F r e q ++) s t r i n g &a t r i b u t o ) const f r e q u e n c i a s Q u a l i . at ( a t r i b u t o ) ; citFreq = frequencias . cbegin () ; { const if { p a i r <s t r i n g , i n t > &c a t e g o r i a F r e q u e n c i a = ∗ c i t F r e q ; ( c a t e g o r i a F r e q u e n c i a . s e c o n d == 1 ) u n i c o s ++; } } return unicos ; } int { C o l e t o r E s t a t i s t i c a s : : contaUnicosQuant ( c on st const int for s t r i n g &a t r i b u t o ) F r e q u e n c i a s Q u a n t D i s c r e t o &f r e q u e n c i a s = atributo ) ; unicos = 0; ( FrequenciasQuantDiscreto : : c o n s t i t e r a t o r cbegin () ; c i t F r e q != f r e q u e n c i a s . c e n d ( ) ; c i t F r e q ++) citFreq = frequencias . { const if { p a i r <d o u b l e , u n i c o s ++; } i n t > &v a l o r F r e q u e n c i a = ∗ c i t F r e q ; ( v a l o r F r e q u e n c i a . s e c o n d == 1 ) const frequenciasQuantDisc . at ( 321 414 415 416 417 418 419 420 421 422 423 424 } return const return const 430 431 432 433 434 { 435 436 437 438 439 { 440 441 442 443 444 { 474 475 476 477 478 479 480 481 482 483 484 485 486 f r e q u e n c i a s Q u a l i . at ( a t r i b u t o ) ; } { 461 462 463 464 465 466 467 468 469 470 471 472 473 C o l e t o r E s t a t i s t i c a s : : F r e q u e n c i a s Q u a l i &C o l e t o r E s t a t i s t i c a s : : f r e q u e n c i a s A t r i b u t o Q u a l i t a t i v o ( c o n s t s t r i n g &a t r i b u t o ) c o n s t { 425 426 427 428 429 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 unicos ; } C o l e t o r E s t a t i s t i c a s : : E s t a t i s t i c a Q u a n t &C o l e t o r E s t a t i s t i c a s : : e s t a t i s t i c a A t r i b u t o Q u a n t i t a t i v o ( c o n s t s t r i n g &a t r i b u t o ) c o n s t return e s t a t i s t i c a s Q u a l i t a t i v o s . at ( a t r i b u t o ) ; } const C o l e t o r E s t a t i s t i c a s : : E s t a t i s t i c a G e r a l &C o l e t o r E s t a t i s t i c a s : : e s t a t i s t i c a G e r a l A t r i b u t o ( c o n s t s t r i n g &a t r i b u t o ) c o n s t return e s t a t i s t i c a s G e r a i s . at ( a t r i b u t o ) ; } const C o l e t o r E s t a t i s t i c a s : : FrequenciasQuantContinuo &C o l e t o r E s t a t i s t i c a s : : f r e q u e n c i a s A t r i b u t o Q u a n t C o n t i n u o ( c o n s t s t r i n g &a t r i b u t o ) c o n s t return frequenciasQuantCont . at ( a t r i b u t o ) ; } const C o l e t o r E s t a t i s t i c a s : : F r e q u e n c i a s Q u a n t D i s c r e t o &C o l e t o r E s t a t i s t i c a s : : f r e q u e n c i a s A t r i b u t o Q u a n t D i s c r e t o ( c o n s t s t r i n g &a t r i b u t o ) c o n s t return frequenciasQuantDisc . at ( a t r i b u t o ) ; } s i z e t C o l e t o r E s t a t i s t i c a s : : totalCategorias ( const const s t r i n g &a t r i b u t o Q u a l i ) { return f r e q u e n c i a s Q u a l i . at ( atributoQuali ) . s i z e ( ) ; } s i z e t C o l e t o r E s t a t i s t i c a s : : t o t a l C l a s s e s ( c o n s t s t r i n g &a t r i b u t o Q u a n t ) { return frequenciasQuantCont . at ( atributoQuant ) . s i z e ( ) ; } const s i z e t ColetorEstatisticas : : indiceCategoriaQual ( c o n s t s t r i n g &a t r i b u t o Q u a l i t a t i v o , c o n s t s t r i n g &c a t e g o r i a ) c o n s t { v e c t o r <s t r i n g > c a t e g o r i a s = v e c t o r <s t r i n g >() ; todasCategoriasAtributoQual ( atributoQualitativo , categorias ) ; v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t C a t e g o r i a = f i n d ( c a t e g o r i a s . c b e g i n ( ) , c a t e g o r i a s . cend ( ) , c a t e g o r i a ) ; i f ( c i t C a t e g o r i a == c a t e g o r i a s . c e n d ( ) ) { throw e x c e p t i o n ( ) ; } return citCategoria − categorias . cbegin () ; } s i z e t C o l e t o r E s t a t i s t i c a s : : indiceClasseQuant ( const double valorDbl , c o n s t s t r i n g &a t r i b u t o ) c o n s t { c o n s t F r e q u e n c i a s Q u a n t C o n t i n u o &f r e q u e n c i a s = frequenciasAtributoQuantContinuo ( atributo ) ; bool pertence = f a l s e ; s i z e t i n d i c e = −1; i n t tmp = −1; f o r ( FrequenciasQuantContinuo : : c o n s t i t e r a t o r c i t F r e q = f r e q u e n c i a s . cbegin () ; c i t F r e q != f r e q u e n c i a s . c e n d ( ) && ! p e r t e n c e ; c i t F r e q ++) { c o n s t p a i r <C l a s s e Q u a n t , i n t > &c l a s s e F r e q u e n c i a = ∗ c i t F r e q ; c o n s t ClasseQuant &c l a s s e = c l a s s e F r e q u e n c i a . f i r s t ; tmp++; i f ( pertenceAClasse ( valorDbl , { classe )) 322 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 pertence = true ; i n d i c e = tmp ; } } if { throw return void { 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 s t r i n g &a t r i b u t o ) citGeral = map<s t r i n g , F r e q u e n c i a s Q u a l i > : : c o n s t i t e r a t o r c i t Q u a l i = frequenciasQuali . find ( atributo ) ; i f ( c i t Q u a l i != f r e q u e n c i a s Q u a l i . cend ( ) ) { frequenciasQuali . erase ( citQuali ) ; } else { map<s t r i n g , E s t a t i s t i c a Q u a n t > : : c o n s t i t e r a t o r c i t Q u a n t E s t = estatisticasQualitativos . find ( atributo ) ; map<s t r i n g , F r e q u e n c i a s Q u a n t D i s c r e t o > : : c o n s t i t e r a t o r c i t Q u a n t = frequenciasQuantDisc . find ( atributo ) ; map<s t r i n g , F r e q u e n c i a s Q u a n t C o n t i n u o > : : c o n s t i t e r a t o r citClassesQuant = frequenciasQuantCont . find ( atributo ) ; e s t a t i s t i c a s Q u a l i t a t i v o s . erase ( citQuantEst ) ; frequenciasQuantDisc . e r a s e ( citQuant ) ; frequenciasQuantCont . erase ( citClassesQuant ) ; } 514 533 534 535 C o l e t o r E s t a t i s t i c a s : : removerAtributo ( const map<s t r i n g , E s t a t i s t i c a G e r a l > : : c o n s t i t e r a t o r estatisticasGerais . find ( atributo ) ; estatisticasGerais . erase ( citGeral ) ; 513 524 525 526 527 528 529 530 531 532 indice ; } 506 507 508 509 510 511 512 522 523 exception () ; } 503 504 505 515 516 517 518 519 520 521 ( i n d i c e == −1) } void C o l e t o r E s t a t i s t i c a s : : renomerAtributo ( const c o n s t s t r i n g &a t r i b u t o N o v o ) s t r i n g &a t r i b u t o A n t i g o , { map<s t r i n g , E s t a t i s t i c a G e r a l > : : c o n s t i t e r a t o r i t E s t G e r a l = e s t a t i s t i c a s G e r a i s . find ( atributoAntigo ) ; i f ( i t E s t G e r a l == e s t a t i s t i c a s G e r a i s . cend ( ) ) { throw e x c e p t i o n ( ) ; } e s t a t i s t i c a s G e r a i s [ a t r i b u t o N o v o ] = i t E s t G e r a l −>s e c o n d ; estatisticasGerais . erase ( itEstGeral ) ; map<s t r i n g , F r e q u e n c i a s Q u a l i > : : c o n s t i t e r a t o r c i t F r e q Q u a l i = frequenciasQuali . find ( atributoAntigo ) ; f r e q u e n c i a s Q u a l i . c e n d ( ) ) // eh q u a l i t a t i v o i f ( c i t F r e q Q u a l i != { c o n s t p a i r <s t r i n g , F r e q u e n c i a s Q u a l i > a t r i b u t o F r e q u e n c i a s = ∗ citFreqQuali ; c o n s t F r e q u e n c i a s Q u a l i &f r e q u e n c i a s = a t r i b u t o F r e q u e n c i a s . s e c o n d ; f r e q u e n c i a s Q u a l i [ atributoNovo ] = f r e q u e n c i a s ; frequenciasQuali . erase ( citFreqQuali ) ; } else { // eh quantitativo map<s t r i n g , E s t a t i s t i c a Q u a n t > : : c o n s t i t e r a t o r c i t E s t a t i s t i c a Q u a n t = e s t a t i s t i c a s Q u a l i t a t i v o s . find ( atributoAntigo ) ; c o n s t p a i r <s t r i n g , E s t a t i s t i c a Q u a n t > & a t r i b u t o E s t a t i s t i c a = ∗ citEstatisticaQuant ; c o n s t E s t a t i s t i c a Q u a n t &e s t a t i s t i c a Q u a n t = a t r i b u t o E s t a t i s t i c a . second ; e s t a t i s t i c a s Q u a l i t a t i v o s [ atributoNovo ] = e s t a t i s t i c a Q u a n t ; estatisticasQualitativos . erase ( citEstatisticaQuant ) ; map<s t r i n g , F r e q u e n c i a s Q u a n t D i s c r e t o > : : c o n s t i t e r a t o r citFreqAtribQuantDisc = frequenciasQuantDisc . find ( atributoAntigo ) ; c o n s t p a i r <s t r i n g , F r e q u e n c i a s Q u a n t D i s c r e t o > atributoFrequenciasQuantDisc = ∗citFreqAtribQuantDisc ; c o n s t F r e q u e n c i a s Q u a n t D i s c r e t o &f r e q u e n c i a s Q u a n t D i s c = atributoFrequenciasQuantDisc . second ; 323 553 554 555 556 557 frequenciasQuantDisc [ atributoNovo ] = frequenciasQuantDisc ; frequenciasQuantDisc . erase ( citFreqAtribQuantDisc ) ; map<s t r i n g , F r e q u e n c i a s Q u a n t C o n t i n u o > : : c o n s t i t e r a t o r citFreqAtribQuantCont = frequenciasQuantCont . find ( atributoAntigo ) ; c o n s t p a i r <s t r i n g , F r e q u e n c i a s Q u a n t C o n t i n u o > atributoFrequenciasQuantCont = ∗ citFreqAtribQuantCont ; c o n s t F r e q u e n c i a s Q u a n t C o n t i n u o &f r e q u e n c i a s Q u a n t C o n t = atributoFrequenciasQuantCont . second ; 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 frequenciasQuantCont [ atributoNovo ] = frequenciasQuantCont ; frequenciasQuantCont . e r a s e ( citFreqAtribQuantCont ) ; } } void C o l e t o r E s t a t i s t i c a s : : todasCategoriasAtributoQual ( const a t r i b u t o , v e c t o r <s t r i n g > &c a t e g o r i a s R e t o r n o ) c o n s t string & { const F r e q u e n c i a s Q u a l i &f r e q u e n c i a s = f r e q u e n c i a s Q u a l i . at ( a t r i b u t o ) ; categoriasRetorno . reserve ( frequencias . size () ) ; for ( FrequenciasQuali : : c o n s t i t e r a t o r c i t F r e q != f r e q u e n c i a s . c e n d ( ) ; c i t F r e q ++) citFreq = frequencias . cbegin () ; { const const p a i r <s t r i n g , i n t > a t r i b u t o F r e q u e n c i a = ∗ c i t F r e q ; s t r i n g &c a t e g o r i a = a t r i b u t o F r e q u e n c i a . f i r s t ; c a t e g o r i a s R e t o r n o . push back ( c a t e g o r i a ) ; } } int C o l e t o r E s t a t i s t i c a s : : kDeH ( c o n s t d o u b l e max , c o n s t d o u b l e min , const double h) const { i n t k = c e i l ( ( max − min ) return k > 1 ? k : 1; / h) ; } d o u b l e C o l e t o r E s t a t i s t i c a s : : hDeK ( c o n s t d o u b l e max , c o n s t d o u b l e min , const int k) const { r e t u r n ( max − min ) / k ; } double C o l e t o r E s t a t i s t i c a s : : hScott ( const int n , const double s ) const { d o u b l e h S c o t t = ( 3 . 5 ∗ s ) / pow ( n , return hScott > 1 ? hScott : 1/3.0) ; 1; } int { C o l e t o r E s t a t i s t i c a s : : kSturges ( const const double int n) const dblN = n ; // l o g 2 ( x ) = l o g 1 0 ( x ) / l o g 1 0 ( 2 ) r e t u r n c e i l ( l o g 1 0 ( dblN ) / l o g 1 0 ( 2 . 0 ) ) + 1 ; // k = l o g 2 ( n ) + 1 } bool C o l e t o r E s t a t i s t i c a s : : pertenceAClasse ( const double valorDbl , c o n s t ClasseQuant &c l a s s e ) c o n s t { return ( v a l o r D b l >= c l a s s e . f i r s t ) && ( v a l o r D b l <= c l a s s e . s e c o n d ) ; } void ColetorEstatisticas : : estatisticasStr ( c o n s t s t r i n g &a t r i b u t o , v e c t o r <p a i r <s t r i n g , d o u b l e >> &r e t o r n o ) const { if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>ehQuant ( a t r i b u t o ) ) 324 630 const E s t a t i s t i c a Q u a n t &e s t a t i s t i c a Q u a n t = estatisticaAtributoQuantitativo ( atributo ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” Média ” , e s t a t i s t i c a Q u a n t . media ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(”Máximo” , e s t a t i s t i c a Q u a n t . maximo ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” W h i s k e r s u p e r i o r ” , e s t a t i s t i c a Q u a n t . whiskerSuperiorDiagramaCaixa ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” Q u a r t i l s u p e r i o r ” , estatisticaQuant . quartilSuperior ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” Mediana ” , e s t a t i s t i c a Q u a n t . mediana ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” Q u a r t i l i n f e r i o r ” , estatisticaQuant . quartilInferior ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” W h i s k e r i n f e r i o r ” , estatisticaQuant . whiskerInferiorDiagramaCaixa ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” Mı́nimo ” , e s t a t i s t i c a Q u a n t . minimo ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” T o t a l o u t l i e r s d i a g r a m a de caixa ” , estatisticaQuant . outliersDiagramaCaixa . s i z e () ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” T o t a l o u t l i e r s t e s t e z− score ” , estatisticaQuant . outliersZScore . size () ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” D e s v i o p a d r ã o ” , e s t a t i s t i c a Q u a n t . desvioPadrao ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” C o e f i c i e n t e de v a r i a ç ã o ” , estatisticaQuant . coeficienteVariacao ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” A m p l i t u d e ” , e st at is ti c aQ ua nt . amplitudeTotal ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” D e s v i o i n t e r q u a r tı́ l i c o ” , estatisticaQuant . desvioInterquartilico ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” V a l o r e s i n v á l i d o s ou missings ” , estatisticaQuant . totalValoresInvalidosOuMissings ) ) ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >(” V a l o r e s v á l i d o s ” , estatisticaQuant . totalValoresValidos ) ) ; 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a n t C o n t i n u o ( a t r i b u t o ) ) const 651 652 for 653 654 655 656 657 658 659 660 ( FrequenciasQuantContinuo : : c o n s t i t e r a t o r frequencias . cbegin () ; c i t F r e q != f r e q u e n c i a s . c e n d ( ) ; c i t F r e q ++) citFreq = { const const const 661 662 663 664 665 666 p a i r <C l a s s e Q u a n t , i n t > &c l a s s e F r e q u e n c i a = ∗ c i t F r e q ; ClasseQuant &c l a s s e = c l a s s e F r e q u e n c i a . f i r s t ; i n t f r e q u e n c i a = c l a s s e F r e q u e n c i a . second ; const string first ); const s t r i n g s u p e r i o r = U t i l i d a d e s : : dblToStdStr ( c l a s s e . second ) ; const string i n f e r i o r = U t i l i d a d e s : : dblToStdStr ( c l a s s e . c o n c a t e n a c a o = i n f e r i o r + ” |−− ” + s u p e r i o r ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , frequencia ) ) ; d o u b l e >( c o n c a t e n a c a o , } 667 668 669 } else i f ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a n t D i s c r e t o ( atributo ) ) { 670 671 const 672 673 for 674 675 676 677 678 679 680 681 682 683 684 685 F r e q u e n c i a s Q u a n t C o n t i n u o &f r e q u e n c i a s = frequenciasAtributoQuantContinuo ( atributo ) ; F r e q u e n c i a s Q u a n t D i s c r e t o &f r e q u e n c i a s = frequenciasAtributoQuantDiscreto ( atributo ) ; ( FrequenciasQuantDiscreto : : c o n s t i t e r a t o r frequencias . cbegin () ; c i t F r e q != f r e q u e n c i a s . c e n d ( ) ; c i t F r e q ++) citFreq = { const const const p a i r <d o u b l e , i n t > &v a l o r F r e q u e n c i a = ∗ c i t F r e q ; double v a l o r = valorFrequencia . f i r s t ; i n t f r e q u e n c i a = valorFrequencia . second ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >( U t i l i d a d e s : : dblToStdStr ( valor , 3) , f r e q u e n c i a ) ) ; } } } else 325 { 686 687 const 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 for F r e q u e n c i a s Q u a l i &f r e q u e n c i a s = frequenciasAtributoQualitativo ( atributo ) ; ( FrequenciasQuali : : c o n s t i t e r a t o r () ; c i t F r e q != f r e q u e n c i a s . c e n d ( ) ; c i t F r e q ++) citFreq = frequencias . cbegin { const const const p a i r <s t r i n g , i n t > c a t e g o r i a F r e q u e n c i a = ∗ c i t F r e q ; s t r i n g &c a t e g o r i a = c a t e g o r i a F r e q u e n c i a . f i r s t ; i n t f r e q u e n c i a = c a t e g o r i a F r e q u e n c i a . second ; r e t o r n o . p u s h b a c k ( p a i r <s t r i n g , d o u b l e >( c a t e g o r i a , frequencia ) ) ; } } } void C o l e t o r E s t a t i s t i c a s : : outliersDiagramaCaixa ( c o n s t s t r i n g &a t r i b u t o , c o n s t d o u b l e fatorWS , c o n s t double fatorWI , map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > &o u t l i e r s R e t o r n o ) const { const EstatisticaQuant &e s t a t i s t i c a = atributo ) ; 709 710 const 711 const T a b e l a D e R e g i s t r o s : : M a p R e g i s t r o s &r e g i s t r o s M a p = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o s ( ) ; s i z e t i n d i c e A t r i b u t o = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributo ) ; 712 713 714 715 716 717 const const const const 718 const 719 720 for 721 722 723 724 725 726 727 double double double e s t a t i s t i c a s Q u a l i t a t i v o s . at ( desvioInterquartilico = estatistica . desvioInterquartilico ; quartilSuperior = estatistica . quartilSuperior ; quartilInferior = estatistica . quartilInferior ; d o u b l e w h i s k e r S = q u a r t i l S u p e r i o r + fatorWS ∗ desvioInterquartilico ; double w h i s k e r I = q u a r t i l I n f e r i o r − fatorWI ∗ desvioInterquartilico ; ( TabelaDeRegistros : : MapRegistros : : c o n s t i t e r a t o r registrosMap . cbegin () ; c i t R e g i s t r o != r e g i s t r o s M a p . c e n d ( ) ; c i t R e g i s t r o ++) citRegistro = { const const s i z e t i n d i c e R e g i s t r o = c i t R e g i s t r o −> f i r s t ; R e g i s t r o & r e g i s t r o = c i t R e g i s t r o −>s e c o n d ; ValorQuantitativo ∗ const valor = r e g i s t r o . retorneValorQuant ( indiceAtributo ) ; d o u b l e v a l o r D b l = v a l o r −>v a l o r D b l ( ) ; 728 729 730 const 731 732 { 733 734 735 736 737 738 739 740 741 742 743 } if ( ( v a l o r D b l > w h i s k e r S | | v a l o r D b l < w h i s k e r I ) && o u t l i e r s R e t o r n o . f i n d ( i n d i c e R e g i s t r o ) == o u t l i e r s R e t o r n o . c e n d ( ) ) o u t l i e r s R e t o r n o . i n s e r t ( p a i r <s i z e t , indiceRegistro , valor ) ) ; ValorQuantitativo ∗ c o n s t >( } } void ColetorEstatisticas : : outliersZScore ( c o n s t s t r i n g &a t r i b u t o , c o n s t d o u b l e zMin , c o n s t d o u b l e zMax , map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > &o u t l i e r s R e t o r n o ) const { const EstatisticaQuant &e s t a t i s t i c a = atributo ) ; 744 745 const 746 const T a b e l a D e R e g i s t r o s : : M a p R e g i s t r o s &r e g i s t r o s M a p = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o s ( ) ; s i z e t i n d i c e A t r i b u t o = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributo ) ; 747 748 749 750 751 752 const const for double double e s t a t i s t i c a s Q u a l i t a t i v o s . at ( media = e s t a t i s t i c a . media ; d e s v i o P a d r a o= e s t a t i s t i c a . d e s v i o P a d r a o ; ( TabelaDeRegistros : : MapRegistros : : c o n s t i t e r a t o r registrosMap . cbegin () ; c i t R e g i s t r o != r e g i s t r o s M a p . c e n d ( ) ; citRegistro = 326 753 754 755 756 757 758 c i t R e g i s t r o ++) { ValorQuantitativo ∗ const valor = r e g i s t r o . retorneValorQuant ( indiceAtributo ) ; d o u b l e v a l o r D b l = v a l o r −>v a l o r D b l ( ) ; 759 760 761 762 const c o n s t d o u b l e z = ( v a l o r D b l − media ) / d e s v i o P a d r a o ; i f ( ( z > zMax | | z < zMin ) && o u t l i e r s R e t o r n o . f i n d ( i n d i c e R e g i s t r o ) == o u t l i e r s R e t o r n o . c e n d ( ) ) { o u t l i e r s R e t o r n o . i n s e r t ( p a i r <s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t >( indiceRegistro , valor ) ) ; } 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 } } double C o l e t o r E s t a t i s t i c a s : : calcMediaParcialBaseadoValores ( c o n s t s t r i n g &a t r i b u t o , c o n s t s t r i n g &a t r i b u t o F i l t r o , c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t > & v a l o r e s F i l t r o ) c o n s t { v e c t o r <s i z e t > r e g i s t r o s I d e n t i f i c a d o s = v e c t o r <s i z e t >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>i d e n t i f i c a r R e g i s t r o s P o r V a l o r ( atributoFiltro , valoresFiltro , false , false , registrosIdentificados ) ; return calcMediaParcial ( atributo , registrosIdentificados ) ; } double ColetorEstatisticas : : calcMediaParcialBaseadoIntervalos ( c o n s t s t r i n g &a t r i b u t o , c o n s t s t r i n g &a t r i b u t o F i l t r o , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > & i n t e r v a l o s ) const { v e c t o r <s i z e t > r e g i s t r o s I d e n t i f i c a d o s = v e c t o r <s i z e t >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> identificarRegistrosQuantPorIntervalo ( atributoFiltro , false , false , registrosIdentificados ) ; return calcMediaParcial ( atributo , intervalos , registrosIdentificados ) ; } double C o l e t o r E s t a t i s t i c a s : : calcMediaParcial ( c o n s t s t r i n g &a t r i b u t o , c o n s t v e c t o r <s i z e t > &i n d i c e s ) c o n s t { v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > v a l o r e s = v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t >() ; T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>v a l o r e s A t r i b u t o Q u a n t P o r I n d i c e ( atributo , indices , valores ) ; 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 s i z e t i n d i c e R e g i s t r o = c i t R e g i s t r o −> f i r s t ; R e g i s t r o & r e g i s t r o = c i t R e g i s t r o −>s e c o n d ; const const double double for soma = 0 ; i = 0; ( v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > : : c o n s t i t e r a t o r valores . cbegin () ; c i t V a l o r != v a l o r e s . c e n d ( ) ; c i t V a l o r ++) citValor = { ValorQuantitativo if { ∗const valor = ∗citValor ; ( ! v a l o r −>m i s s i n g ( ) && v a l o r −>f o r m a t o V a l i d o ( ) ) soma += v a l o r −>v a l o r D b l ( ) ; i ++; } } if { (i != 0) return soma / i ; } return n u m e r i c l i m i t s <d o u b l e > : : q u i e t N a N ( ) ; } Listagem B.107: coletor estatisticas.cpp 327 1 #i f n d e f COLETOR ESTATISTICAS H 2 #d e f i n e COLETOR ESTATISTICAS H 3 4 #i n c l u d e ” t a b e l a r e g i s t r o s . h ” 5 6 u s i n g namespace s t d ; 7 8 class ColetorEstatisticas 9 { 10 p u b l i c : 11 t y p e d e f p a i r <d o u b l e , d o u b l e > C l a s s e Q u a n t ; 12 t y p e d e f map<C l a s s e Q u a n t , i n t > F r e q u e n c i a s Q u a n t C o n t i n u o ; 13 t y p e d e f map<d o u b l e , i n t > F r e q u e n c i a s Q u a n t D i s c r e t o ; 14 t y p e d e f map<s t r i n g , i n t > F r e q u e n c i a s Q u a l i ; 15 16 s t a t i c c o n s t d o u b l e FATOR WISKER SUPERIOR ; 17 s t a t i c c o n s t d o u b l e FATOR WISKER INFEIROR ; 18 s t a t i c c o n s t d o u b l e ZMIN ; 19 s t a t i c c o n s t d o u b l e ZMAX ; 20 21 struct EstatisticaGeral 22 { 23 int missings ; 24 int distintos ; 25 int unicos ; 26 }; 27 28 struct EstatisticaQuant 29 { 30 d o u b l e media ; 31 d o u b l e maximo ; 32 double whiskerSuperiorDiagramaCaixa ; 33 double q u a r t i l S u p e r i o r ; 34 d o u b l e mediana ; 35 double q u a r t i l I n f e r i o r ; 36 double whiskerInferiorDiagramaCaixa ; 37 d o u b l e minimo ; 38 double desvioPadrao ; 39 double c o e f i c i e n t e V a r i a c a o ; 40 double amplitudeTotal ; 41 double d e s v i o I n t e r q u a r t i l i c o ; 42 43 v e c t o r <d o u b l e > o u t l i e r s D i a g r a m a C a i x a ; 44 v e c t o r <d o u b l e > o u t l i e r s Z S c o r e ; 45 46 int totalValoresInvalidosOuMissings ; 47 int totalValoresValidos ; 48 }; 49 50 static ColetorEstatisticas ∗obterInstancia () ; 51 s t a t i c void d e s t r u i r I n s t a n c i a () ; 52 53 d o u b l e q u a r t i l S u p e r i o r ( c o n s t v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > & valoresQuantOrdenados , const i n t n ) const ; 54 d o u b l e mediana ( c o n s t v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > & valoresQuantOrdenados , const i n t n ) const ; 55 d o u b l e q u a r t i l I n f e r i o r ( c o n s t v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > & valoresQuantOrdenados , const i n t n ) const ; 56 57 c o n s t E s t a t i s t i c a G e r a l &e s t a t i s t i c a G e r a l A t r i b u t o ( c o n s t s t r i n g &a t r i b u t o ) const ; 58 c o n s t E s t a t i s t i c a Q u a n t &e s t a t i s t i c a A t r i b u t o Q u a n t i t a t i v o ( c o n s t s t r i n g & atributo ) const ; 59 c o n s t F r e q u e n c i a s Q u a l i &f r e q u e n c i a s A t r i b u t o Q u a l i t a t i v o ( c o n s t s t r i n g & atributo ) const ; 60 c o n s t F r e q u e n c i a s Q u a n t C o n t i n u o &f r e q u e n c i a s A t r i b u t o Q u a n t C o n t i n u o ( c o n s t s t r i n g &a t r i b u t o ) c o n s t ; 61 c o n s t F r e q u e n c i a s Q u a n t D i s c r e t o &f r e q u e n c i a s A t r i b u t o Q u a n t D i s c r e t o ( c o n s t s t r i n g &a t r i b u t o ) c o n s t ; 62 s i z e t t o t a l C a t e g o r i a s ( c o n s t s t r i n g &a t r i b u t o Q u a l i ) c o n s t ; 63 s i z e t t o t a l C l a s s e s ( c o n s t s t r i n g &a t r i b u t o Q u a n t ) c o n s t ; 64 v o i d e s t a t i s t i c a s S t r ( c o n s t s t r i n g &a t r i b u t o , v e c t o r <p a i r <s t r i n g , d o u b l e >> &r e t o r n o ) c o n s t ; 65 v o i d t o d a s C a t e g o r i a s A t r i b u t o Q u a l ( c o n s t s t r i n g &a t r i b u t o , v e c t o r <s t r i n g > &v a l o r e s R e t o r n o ) c o n s t ; 66 67 v o i d r e m o v e r A t r i b u t o ( c o n s t s t r i n g &a t r i b u t o ) ; 68 v o i d r e n o m e r A t r i b u t o ( c o n s t s t r i n g &a t r i b u t o , c o n s t s t r i n g &nomeNovo ) ; 69 70 s i z e t i n d i c e C a t e g o r i a Q u a l ( c o n s t s t r i n g &a t r i b u t o , c o n s t s t r i n g & categoria ) const ; 328 71 size t 72 73 void 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 indiceClasseQuant ( const const ; double valorDbl , coletarEstatisticasDosAtributos ( const ThreadWorker ∗ t h r e a d = NULL) ; const s t r i n g &a t r i b u t o ) v e c t o r <s t r i n g > &a t r i b u t o s , d o u b l e c a l c M e d i a P a r c i a l B a s e a d o V a l o r e s ( c o n s t s t r i n g &a t r i b u t o , c o n s t s t r i n g &a t r i b u t o F i l t r o , c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t > & v a l o r e s F i l t r o ) const ; d o u b l e c a l c M e d i a P a r c i a l B a s e a d o I n t e r v a l o s ( c o n s t s t r i n g &a t r i b u t o , c o n s t s t r i n g &a t r i b u t o F i l t r o , c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s ) c o n s t ; v o i d o u t l i e r s D i a g r a m a C a i x a ( c o n s t s t r i n g &a t r i b u t o , c o n s t d o u b l e fatorWS , c o n s t d o u b l e f a t o r W I , map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > & outliersRetorno ) const ; v o i d o u t l i e r s Z S c o r e ( c o n s t s t r i n g &a t r i b u t o , c o n s t d o u b l e zMin , c o n s t d o u b l e zMax , map<s i z e t , V a l o r Q u a n t i t a t i v o ∗ c o n s t > & outliersRetorno ) const ; private : static ColetorEstatisticas map<s t r i n g map<s t r i n g map<s t r i n g map<s t r i n g map<s t r i n g , , , , , ∗instancia ; EstatisticaGeral> estatisticasGerais ; EstatisticaQuant> estatisticasQualitativos ; frequenciasQuali ; FrequenciasQuali> FrequenciasQuantDiscreto> frequenciasQuantDisc ; FrequenciasQuantContinuo> frequenciasQuantCont ; C o l e t o r E s t a t i s t i c a s () {}; C o l e t o r E s t a t i s t i c a s ( c o n s t C o l e t o r E s t a t i s t i c a s &) { } ; C o l e t o r E s t a t i s t i c a s &o p e r a t o r =( c o n s t C o l e t o r E s t a t i s t i c a s &) { } ; ˜ ColetorEstatisticas () ; b o o l p e r t e n c e A C l a s s e ( c o n s t double valorDbl , c o n s t ClasseQuant &c l a s s e ) const ; d o u b l e c a l c M e d i a P a r c i a l ( c o n s t s t r i n g &a t r i b u t o , c o n s t v e c t o r <s i z e t > & indices ) const ; i n t c o n t a U n i c o s Q u a l i ( c o n s t s t r i n g &a t r i b u t o ) c o n s t ; i n t c o n t a U n i c o s Q u a n t ( c o n s t s t r i n g &a t r i b u t o ) c o n s t ; v o i d c o l e t a r E s t a t i s t i c a s D o A t r i b u t o ( c o n s t s t r i n g &a t r i b u t o ) ; 97 98 99 100 101 d o u b l e hDeK ( c o n s t d o u b l e max , c o n s t d o u b l e min , c o n s t i n t k ) 102 double hScott ( const i n t n , const double s ) const ; 103 i n t kDeH ( c o n s t d o u b l e max , c o n s t d o u b l e min , c o n s t d o u b l e h ) 104 int kSturges ( const int n) const ; 105 } ; 106 #e n d i f const ; const ; Listagem B.108: coletor estatisticas.h 1 #i n c l u d e ” d i s t r i b u i c a o c o n t r o l e . h ” 2 3 Distribuicao : : Distribuicao ( const f i t : : d i s t r i b u t i o n t y p e tipo ) : f i t D i s t r i b u i c a o ( f i t : : g e t d e f a u l t d i s t r i b u t i o n ( t i p o )−>c l o n e ( ) ) , 4 5 tipo ( tipo ) , valorP (0) , 6 7 valorPValido ( f a l s e ) 8 {} 9 10 D i s t r i b u i c a o : : D i s t r i b u i c a o ( c o n s t l i s t <d o u b l e > &v a l o r e s , c o n s t f i t : : distribution type tipo ) : f i t D i s t r i b u i c a o (NULL) , 11 12 tipo ( tipo ) , 13 valorP (0) , 14 valorPValido ( f a l s e ) 15 { 16 gerarDistribuicaoDeValores ( valores ) ; 17 } 18 19 D i s t r i b u i c a o : : D i s t r i b u i c a o ( c o n s t v e c t o r <d o u b l e > &p a r a m e t r o s , 20 c o n s t l i s t <d o u b l e > &v a l o r e s , 21 const f i t : : d i s t r i b u t i o n t y p e tipo ) : 22 f i t D i s t r i b u i c a o (NULL) , 23 tipo ( tipo ) , 24 valorP (0) , 25 valorPValido ( f a l s e ) 26 { 27 g e r a r D i s t r i b u i c a o D e P a r a m e t r o s ( parametros , v a l o r e s ) ; 329 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 } D i s t r i b u i c a o : : D i s t r i b u i c a o ( c o n s t D i s t r i b u i c a o &o u t r a ) f i t D i s t r i b u i c a o ( ( o u t r a . f i t D i s t r i b u i c a o != NULL) f i t D i s t r i b u i c a o −>c l o n e ( ) : NULL) , t i p o ( outra . t i p o ) , valorP ( outra . valorP ) , valorPValido ( outra . valorPValido ) {} D i s t r i b u i c a o &D i s t r i b u i c a o : : o p e r a t o r= ( c o n s t { if ( fitDistribuicao ) { delete fitDistribuicao ; } outra . D i s t r i b u i c a o &o u t r a ) f i t D i s t r i b u i c a o = ( outra . f i t D i s t r i b u i c a o f i t D i s t r i b u i c a o −>c l o n e ( ) : NULL ; t i p o = outra . t i p o ; valorP = outra . valorP ; valorPValido = outra . valorPValido ; return : ? != NULL) ? outra . ∗this ; } Distribuicao : : ˜ Distribuicao () { if ( fitDistribuicao ) { delete fitDistribuicao ; f i t D i s t r i b u i c a o = NULL ; } } void { Distribuicao : : gerarDistribuicaoDeValores ( const if { ( l i s t <d o u b l e > &v a l o r e s ) fitDistribuicao ) delete fitDistribuicao ; f i t D i s t r i b u i c a o = NULL ; } f i t D i s t r i b u i c a o = f i t : : get distribution ( valores , t i p o )−>c l o n e ( ) ; calcularValorP ( valores ) ; } void Distribuicao : : gerarDistribuicaoDeParametros ( c o n s t v e c t o r <d o u b l e > &p a r a m e t r o s , c o n s t l i s t <d o u b l e > &v a l o r e s ) { if { fitDistribuicao ) ( delete fitDistribuicao ; f i t D i s t r i b u i c a o = NULL ; } f i t D i s t r i b u i c a o = f i t : : g e t d i s t r i b u t i o n ( parametros , t i p o )−>c l o n e ( ) ; calcularValorP ( valores ) ; } void { Distribuicao : : calcularValorP ( const if { l i s t <d o u b l e > &v a l o r e s ) ( v a l o r e s . empty ( ) ) valorP = 0; valorPValido = f a l s e ; return ; } if { (! fitDistribuicao ) f i t D i s t r i b u i c a o = f i t : : get distribution ( valores , t i p o )−>c l o n e ( ) ; } f i t : : f r e q t a b l e f r e q T a b l e = f i t : : g e t f r e q t a b l e ( v a l o r e s , ∗( f i t D i s t r i b u i c a o ) , f i t : : STURGES) ; valorP = f i t : : g e t c h i s q u a r e t e s t ( freqTable ) . chi p value ; valorPValido = true ; } 330 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 bool { D i s t r i b u i c a o : : o p e r a t o r <( c o n s t return t h i s −> v a l o r P < o u t r a . D i s t r i b u i c a o &o u t r a ) const valorP ; } double D i s t r i b u i c a o : : valorP ( ) { return valorP ; } bool { const Distribuicao : : valorPValido () return const valorPValido ; } fit : : distribution type { return tipo ; } Distribuicao : : tipo () const s t r i n g D i s t r i b u i c a o : : nome ( ) c o n s t { return f i t D i s t r i b u i c a o −>name ( ) ; } v e c t o r <s t r i n g > D i s t r i b u i c a o : : n o m e s P a r a m e t r o s ( ) { return f i t D i s t r i b u i c a o −>paramNames ( ) ; } const v e c t o r <d o u b l e > D i s t r i b u i c a o : : p a r a m e t r o s ( ) c o n s t { return f i t D i s t r i b u i c a o −>g e t p a r a m s ( ) ; } double D i s t r i b u i c a o : : g e r a r V a l o r A l e a t o r i o ( ) { return f i t D i s t r i b u i c a o −>g e t r a n d o m ( ) ; } const Listagem B.109: distribuicao controle.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #i f n d e f #d e f i n e DISTRIBUICAO H DISTRIBUICAO H #i f n d e f TCC RODOLFO #i n c l u d e ” l i b f i t / i n c l u d e s / f i t . h ” #e l s e #i n c l u d e ” . . / l i b f i t / i n c l u d e s / f i t . h ” #e n d i f using namespace std ; class Distribuicao { public : Distribuicao ( const Distribuicao ( const Distribuicao ( const tipo ) ; Distribuicao ( const valores , const ˜ Distribuicao () ; D i s t r i b u i c a o &o u t r a ) ; f i t : : distribution type tipo ) ; l i s t <d o u b l e > &v a l o r e s , c o n s t f i t : : v e c t o r <d o u b l e > &p a r a m e t r o s , c o n s t f i t : : distribution type tipo ) ; D i s t r i b u i c a o &o p e r a t o r= ( c o n s t D i s t r i b u i c a o &o u t r a ) ; b o o l o p e r a t o r <( c o n s t D i s t r i b u i c a o &o u t r a ) c o n s t ; bool valorPValido () const ; double g e r a r V a l o r A l e a t o r i o ( ) const ; double valorP ( ) const ; f i t : : d i s t r i b u t i o n t y p e tipo () const ; s t r i n g nome ( ) c o n s t ; v e c t o r <d o u b l e > p a r a m e t r o s ( ) c o n s t ; v e c t o r <s t r i n g > n o m e s P a r a m e t r o s ( ) c o n s t ; private : fit :: base distrib ∗ fitDistribuicao ; fit : : distribution type tipo ; double valorP ; distribution type l i s t <d o u b l e > & 331 36 37 38 39 bool valorPValido ; void void g e r a r D i s t r i b u i c a o D e V a l o r e s ( c o n s t l i s t <d o u b l e > &v a l o r e s ) ; g e r a r D i s t r i b u i c a o D e P a r a m e t r o s ( c o n s t v e c t o r <d o u b l e > &p a r a m e t r o s , c o n s t l i s t <d o u b l e > &v a l o r e s ) ; c a l c u l a r V a l o r P ( c o n s t l i s t <d o u b l e > &v a l o r e s ) ; 40 void 41 } ; 42 43 #e n d i f Listagem B.110: distribuicao controle.h 1 #i f n d e f ENUMS AT H 2 #d e f i n e ENUMS AT H 3 4 enum TipoDado AT {QUALITATIVO = 0 , QUANT DISCRETO = 1 , QUANT CONTINUO = 2 } ; 5 enum O p e r a c a o {MAIORQUE MENORQUE = 0 , MAIORQUE MENORIGUALQUE = 1 , MAIORIGUALQUE MENORQUE = 2 , MAIORIGUALQUE MENORIGUALQUE = 3 } ; 6 7 #e n d i f Listagem B.111: enums at.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #i n c l u d e ” g e r a d o r d i s t r i b u i c o e s . h” #i n c l u d e < i t e r a t o r > #i n c l u d e < u t i l i t y > #i n c l u d e <a l g o r i t h m > #i n c l u d e ” u t i l i d a d e s . h” const f i t : : d i s t r i b u t i o n t y p e GeradorDistribuicoes : : t i p o s D i s t r i [ 8 ] = { f i t : : BETA, f i t : : EXPONENTIAL, f i t : :GAMMA, f i t : : LOGNORMAL, f i t : : NORMAL, f i t : : TRIANGULAR, f i t : : UNIFORM, f i t : : WEIBULL} ; void GeradorDistribuicoes : : gerarTodasDistribuicoes ( c o n s t l i s t <d o u b l e > &v a l o r e s , v e c t o r <c o n s t D i s t r i b u i c a o > &d i s t r s O k R e t o r n o , v e c t o r <c o n s t D i s t r i b u i c a o > &d i s t r s N a o O k R e t o r n o ) { bool for { erro = true ; ( size t if { i = 0; i < 8; i ++) ( ! v a l o r e s . empty ( ) ) try { distrsOkRetorno . push back ( D i s t r i b u i c a o ( v a l o r e s , [ i ]) ) ; erro = f a l s e ; tiposDistri } catch ( . . . ) { erro = true ; } } if { ( erro ) try { distrsNaoOkRetorno . push back ( D i s t r i b u i c a o ( t i p o s D i s t r i [ i ] ) ) ; } catch ( . . . ) { } } } sort ( distrsOkRetorno . begin () , d i s t r s O k R e t o r n o . end ( ) ) ; } Listagem B.112: gerador distribuicoes.cpp 332 1 #i f n d e f MANIPULADORDISTRIBUICOES H 2 #d e f i n e MANIPULADORDISTRIBUICOES H 3 4 #i n c l u d e ” d i s t r i b u i c a o c o n t r o l e . h ” 5 6 u s i n g namespace s t d ; 7 8 class GeradorDistribuicoes 9 { 10 p u b l i c : 11 s t a t i c v o i d g e r a r T o d a s D i s t r i b u i c o e s ( c o n s t l i s t <d o u b l e > &v a l o r e s , v e c t o r <c o n s t D i s t r i b u i c a o > &d i s t r s O k R e t o r n o , v e c t o r <c o n s t D i s t r i b u i c a o > &d i s t r s N a o O k R e t o r n o ) ; 12 p r i v a t e : 13 s t a t i c const f i t : : d i s t r i b u t i o n t y p e t i p o s D i s t r i [ 8 ] ; 14 } ; 15 #e n d i f Listagem B.113: gerador distribuicoes.h 1 #i n c l u d e ” g e r a d o r g r a f i c o s . h ” 2 3 #i n c l u d e ” u t i l i d a d e s . h ” 4 5 void GeradorGraficos : : gerarHistogramaQuantContinuo ( 6 c o n s t s t r i n g &a t r i b u t o , 7 v e c t o r <C o l e t o r E s t a t i s t i c a s : : C l a s s e Q u a n t> &c l a s s e s R e t o r n o , 8 F r e q u e n c i a s &f r e q u e n c i a s R e t o r n o ) 9 { 10 c o n s t C o l e t o r E s t a t i s t i c a s : : F r e q u e n c i a s Q u a n t C o n t i n u o &f r e q = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> frequenciasAtributoQuantContinuo ( atributo ) ; 11 12 const s i z e t totalClasses = freq . s i z e () ; 13 14 f o r ( C o l e t o r E s t a t i s t i c a s : : FrequenciasQuantContinuo : : c o n s t i t e r a t o r citFreq = freq . cbegin () ; 15 c i t F r e q != f r e q . c e n d ( ) ; 16 c i t F r e q ++) 17 { 18 c o n s t p a i r <C o l e t o r E s t a t i s t i c a s : : C l a s s e Q u a n t , i n t > &c l a s s e F r e q u e n c i a = ∗citFreq ; 19 c o n s t C o l e t o r E s t a t i s t i c a s : : ClasseQuant &c l a s s e = c l a s s e F r e q u e n c i a . first ; 20 const i n t f r e q u e n c i a = c l a s s e F r e q u e n c i a . second ; 21 22 f r e q u e n c i a s R e t o r n o . push back ( f r e q u e n c i a ) ; 23 c l a s s e s R e t o r n o . push back ( c l a s s e ) ; 24 } 25 } 26 27 v o i d G e r a d o r G r a f i c o s : : g e r a r G r a f i c o B a r r a s Q u a n t D i s c r e t o ( 28 c o n s t s t r i n g &a t r i b u t o , 29 v e c t o r <s t r i n g > &c a t e g o r i a s R e t o r n o , 30 F r e q u e n c i a s &f r e q u e n c i a s R e t o r n o ) 31 { 32 c o n s t C o l e t o r E s t a t i s t i c a s : : F r e q u e n c i a s Q u a n t D i s c r e t o &f r e q u e n c i a s = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> frequenciasAtributoQuantDiscreto ( atributo ) ; 33 34 f or ( C o l e t o r E s t a t i s t i c a s : : FrequenciasQuantDiscreto : : c o n s t i t e r a t o r citFreq = frequencias . cbegin () ; 35 c i t F r e q != f r e q u e n c i a s . c e n d ( ) ; 36 c i t F r e q ++) 37 { 38 c o n s t p a i r <d o u b l e , i n t > &v a l o r F r e q u e n c i a = ∗ c i t F r e q ; 39 const double v a l o r = valorFrequencia . f i r s t ; 40 const i n t f r e q u e n c i a = valorFrequencia . second ; 41 42 f r e q u e n c i a s R e t o r n o . push back ( f r e q u e n c i a ) ; 43 c a t e g o r i a s R e t o r n o . push back ( U t i l i d a d e s : : dblToStdStr ( v a l o r ) ) ; 44 } 45 } 46 47 v o i d G e r a d o r G r a f i c o s : : g e r a r G r a f i c o B a r r a s Q u a l i t a t i v o ( 48 c o n s t s t r i n g &a t r i b u t o , 49 v e c t o r <s t r i n g > &c a t e g o r i a s R e t o r n o , 50 F r e q u e n c i a s &f r e q u e n c i a s R e t o r n o ) 51 { 333 52 const 53 54 for 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 ( C o l e t o r E s t a t i s t i c a s : : FrequenciasQuali : : c o n s t i t e r a t o r frequencias . cbegin () ; c i t F r e q != f r e q u e n c i a s . c e n d ( ) ; c i t F r e q ++) const const const f r e q u e n c i a s R e t o r n o . push back ( f r e q u e n c i a ) ; c a t e g o r i a s R e t o r n o . push back ( c a t e g o r i a ) ; } void GeradorGraficos : : gerarDiagramaDispersao2v ( c o n s t s t r i n g &a t r i b u t o X , c o n s t s t r i n g &a t r i b u t o Y , C o o r d e n a d a s &c o o r d e n a d a s R e t o r n o ) { const 74 75 const 76 77 for 108 109 110 111 112 113 114 115 116 117 118 119 120 121 p a i r <s t r i n g , i n t > c a t e g o r i a F r e q u e n c i a = ∗ c i t F r e q ; s t r i n g &c a t e g o r i a = c a t e g o r i a F r e q u e n c i a . f i r s t ; i n t f r e q u e n c i a = c a t e g o r i a F r e q u e n c i a . second ; } const 107 citFreq = { 73 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 C o l e t o r E s t a t i s t i c a s : : F r e q u e n c i a s Q u a l i &f r e q u e n c i a s = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> frequenciasAtributoQualitativo ( atributo ) ; s i z e t i n d i c e A t r i b X = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributoX ) ; s i z e t i n d i c e A t r i b Y = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributoY ) ; T a b e l a D e R e g i s t r o s : : M a p R e g i s t r o s &r e g s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o s ( ) ; ( TabelaDeRegistros : : MapRegistros : : c o n s t i t e r a t o r . cbegin () ; c i t R e g i s t r o != r e g s . c e n d ( ) ; c i t R e g i s t r o ++) citRegistro = regs { const R e g i s t r o & r e g i s t r o = c i t R e g i s t r o −>s e c o n d ; ValorBase ∗ const ValorBase ∗ const if { valorX = r e g i s t r o . r e t o r n e V a l o r ( indiceAtribX ) ; valorY = r e g i s t r o . r e t o r n e V a l o r ( indiceAtribY ) ; ( ! v a l o r X−>m i s s i n g ( ) && ! v a l o r Y−>m i s s i n g ( ) ) double double x = posicaoNoEixo ( atributoX , y = posicaoNoEixo ( atributoY , valorX ) ; valorY ) ; Coordenada c ; c . push back ( x ) ; c . push back ( y ) ; coordenadasRetorno . push back ( c ) ; } } } void GeradorGraficos : : gerarDiagramaDispersao3v ( c o n s t s t r i n g &a t r i b u t o X , c o n s t s t r i n g &a t r i b u t o Y , c o n s t s t r i n g &a t r i b u t o Z , C o o r d e n a d a s &c o o r d e n a d a s R e t o r n o ) { s i z e t i n d i c e A t r i b X = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributoX ) ; ; s i z e t i n d i c e A t r i b Y = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributoY ) ; ; c o n s t s i z e t i n d i c e A t r i b Z = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributoZ ) ; ; const const // r e g i s t r o s c o n s t T a b e l a D e R e g i s t r o s : : M a p R e g i s t r o s &r e g s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o s ( ) ; for ( TabelaDeRegistros : : MapRegistros : : c o n s t i t e r a t o r . cbegin () ; c i t R e g i s t r o != r e g s . c e n d ( ) ; c i t R e g i s t r o ++) citRegistro = regs { const R e g i s t r o & r e g i s t r o = c i t R e g i s t r o −>s e c o n d ; ValorBase ∗ const ValorBase ∗ const ValorBase ∗ const valorX = r e g i s t r o . r e t o r n e V a l o r ( indiceAtribX ) ; valorY = r e g i s t r o . r e t o r n e V a l o r ( indiceAtribY ) ; valorZ = r e g i s t r o . retorneValor ( indiceAtribZ ) ; 334 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 if { double double double if || isnan (y) || isnan ( z ) ) {continue ;} // n o t a coordenadasRetorno . push back ( c ) ; } } void GeradorGraficos : : gerarGraficoMultBarras ( c o n s t s t r i n g &a t r i b u t o X , c o n s t s t r i n g &a t r i b u t o Y , v e c t o r <F r e q u e n c i a s > &f r e q u e n c i a s R e t o r n o ) { s i z e t n = 0; s i z e t m = 0; if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o X ) ) n = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o t a l C a t e g o r i a s ( atributoX ) ; 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 } else { 180 const 186 187 188 189 190 191 192 193 194 195 196 ( isnan (x) number valorX ) ; valorY ) ; valorZ ) ; } } else { 184 185 x = posicaoNoEixo ( atributoX , y = posicaoNoEixo ( atributoY , z = posicaoNoEixo ( atributoZ , Coordenada c ; c . push back ( x ) ; c . push back ( y ) ; c . push back ( z ) ; 152 153 154 155 156 157 158 159 160 181 182 183 ( ! v a l o r X−>m i s s i n g ( ) && ! v a l o r Y−>m i s s i n g ( ) && ! v a l o r Z −>m i s s i n g ( ) ) n = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o t a l C l a s s e s ( a t r i b u t o X ) ; } if { ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o Y ) ) m = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o t a l C a t e g o r i a s ( atributoY ) ; m = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−>t o t a l C l a s s e s ( a t r i b u t o Y ) ; } // f r e q u ê n c i a s i n i c i a s i g u a i s a z e r o . f o r ( s i z e t i = 0 ; i < n ; i ++) { Frequencias fequencia = Frequencias () ; f o r ( s i z e t j = 0 ; j < m; j ++) { f e q u e n c i a . push back ( 0 ) ; } f r e q u e n c i a s R e t o r n o . push back ( f e q u e n c i a ) ; } const s i z e t i n d i c e A t r i b X = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributoX ) ; s i z e t i n d i c e A t r i b Y = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−> indiceAtributo ( atributoY ) ; // r e g i s t r o s c o n s t T a b e l a D e R e g i s t r o s : : M a p R e g i s t r o s &r e g s = T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>r e g i s t r o s ( ) ; for ( TabelaDeRegistros : : MapRegistros : : c o n s t i t e r a t o r . cbegin () ; c i t R e g i s t r o != r e g s . c e n d ( ) ; c i t R e g i s t r o ++) citRegistro = regs { const R e g i s t r o & r e g i s t r o = c i t R e g i s t r o −>s e c o n d ; ValorBase ∗ const ValorBase ∗ const if { valorX = r e g i s t r o . r e t o r n e V a l o r ( indiceAtribX ) ; valorY = r e g i s t r o . r e t o r n e V a l o r ( indiceAtribY ) ; ( ! v a l o r X−>m i s s i n g ( ) && ! v a l o r Y−>m i s s i n g ( ) ) size t l i n h a = −1; 335 197 if 198 199 { 200 201 202 203 } else { l i n h a = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> i n d i c e C a t e g o r i a Q u a l ( a t r i b u t o X , v a l o r X−>v a l o r S t r ( ) ) ; d o u b l e x = d y n a m i c c a s t <V a l o r Q u a n t i t a t i v o ∗ c o n s t >( v a l o r X )−>v a l o r D b l ( ) ; i f ( i s n a n ( x ) ) { c o n t i n u e ; } // i f n o t a number l i n h a = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> indiceClasseQuant (x , atributoX ) ; const 204 205 } 206 207 208 209 s i z e t c o l u n a = −1; i f ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( atributoY ) ) { c o l u n a = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> i n d i c e C a t e g o r i a Q u a l ( a t r i b u t o Y , v a l o r Y−>v a l o r S t r ( ) ) ; } else { c o n s t d o u b l e y = d y n a m i c c a s t <V a l o r Q u a n t i t a t i v o ∗ c o n s t >( v a l o r Y )−>v a l o r D b l ( ) ; i f ( i s n a n ( y ) ) { c o n t i n u e ; } // i f n o t a number c o l u n a = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> indiceClasseQuant (y , atributoY ) ; } i f ( l i n h a != −1 && c o l u n a != −1) { f r e q u e n c i a s R e t o r n o [ l i n h a ] [ c o l u n a ]++; } 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( atributoX ) ) } } } double GeradorGraficos : : posicaoNoEixo ( c o n s t s t r i n g &a t r i b u t o , ValorBase ∗ const v a l o r ) { double posicaoNoEixo = 0 . 0 ; i f ( T a b e l a D e R e g i s t r o s : : o b t e r I n s t a n c i a ( )−>e h Q u a l i t a t i v o ( a t r i b u t o ) ) { p o s i c a o N o E i x o = C o l e t o r E s t a t i s t i c a s : : o b t e r I n s t a n c i a ( )−> i n d i c e C a t e g o r i a Q u a l ( a t r i b u t o , v a l o r −>v a l o r S t r ( ) ) ; } else { p o s i c a o N o E i x o = d y n a m i c c a s t <V a l o r Q u a n t i t a t i v o ∗ c o n s t >( v a l o r )−> valorDbl () ; } return posicaoNoEixo ; } Listagem B.114: gerador graficos.cpp 1 #i f n d e f GERADORGRAFICOS H 2 #d e f i n e GERADORGRAFICOS H 3 4 #i n c l u d e ” c o l e t o r e s t a t i s t i c a s . h ” 5 6 u s i n g namespace s t d ; 7 8 c l a s s GeradorGraficos 9 { 10 p u b l i c : 11 t y p e d e f v e c t o r <d o u b l e > Coordenada ; 12 t y p e d e f v e c t o r <Coordenada> C o o r d e n a d a s ; 13 t y p e d e f v e c t o r <i n t > F r e q u e n c i a s ; 14 15 s t a t i c v o i d g e r a r D i a g r a m a D i s p e r s a o 2 v ( c o n s t s t r i n g &a t r i b u t o X , c o n s t s t r i n g &a t r i b u t o Y , C o o r d e n a d a s &c o o r d e n a d a s R e t o r n o ) ; 16 s t a t i c v o i d g e r a r D i a g r a m a D i s p e r s a o 3 v ( c o n s t s t r i n g &a t r i b u t o X , c o n s t s t r i n g &a t r i b u t o Y , c o n s t s t r i n g &a t r i b u t o Z , C o o r d e n a d a s & coordenadasRetorno ) ; 17 s t a t i c v o i d g e r a r G r a f i c o B a r r a s Q u a l i t a t i v o ( c o n s t s t r i n g &a t r i b u t o , v e c t o r <s t r i n g > &c a t e g o r i a s R e t o r n o , F r e q u e n c i a s &f r e q u e n c i a s R e t o r n o ); 336 18 19 20 21 22 23 s t a t i c v o i d g e r a r H i s t o g r a m a Q u a n t C o n t i n u o ( c o n s t s t r i n g &a t r i b u t o , v e c t o r <C o l e t o r E s t a t i s t i c a s : : C l a s s e Q u a n t> &c l a s s e s R e t o r n o , F r e q u e n c i a s & frequenciasRetorno ) ; s t a t i c v o i d g e r a r G r a f i c o B a r r a s Q u a n t D i s c r e t o ( c o n s t s t r i n g &a t r i b u t o , v e c t o r <s t r i n g > &c a t e g o r i a s R e t o r n o , F r e q u e n c i a s &f r e q u e n c i a s R e t o r n o ); s t a t i c v o i d g e r a r G r a f i c o M u l t B a r r a s ( c o n s t s t r i n g &a t r i b u t o X , c o n s t s t r i n g &a t r i b u t o Y , v e c t o r <F r e q u e n c i a s > &r e t o r n o ) ; private : s t a t i c double valor ) ; 24 } ; 25 #e n d i f posicaoNoEixo ( const s t r i n g &a t r i b u t o , ValorBase ∗ const Listagem B.115: gerador graficos.h 1 #i n c l u d e ” r e g i s t r o . h ” 2 3 Registro : : Registro () 4 { 5 v a l o r e s = v e c t o r <V a l o r B a s e ∗ c o n s t >() ; 6 } 7 8 R e g i s t r o : : R e g i s t r o ( c o n s t R e g i s t r o &o u t r o ) 9 { 10 valores . clear () ; 11 12 f o r ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r c i t V a l o r O u t r o = o u t r o . v a l o r e s . cbegin () ; 13 c i t V a l o r O u t r o != o u t r o . v a l o r e s . c e n d ( ) ; 14 c i t V a l o r O u t r o ++) 15 { 16 ValorBase ∗ const valorOutro = ∗ citValorOutro ; 17 t h i s −> v a l o r e s . p u s h b a c k ( v a l o r O u t r o −>c l o n e ( ) ) ; 18 } 19 } 20 R e g i s t r o &R e g i s t r o : : o p e r a t o r= ( c o n s t R e g i s t r o &o u t r o ) 21 { 22 f o r ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r c i t V a l o r = t h i s −> v a l o r e s . cbegin () ; 23 c i t V a l o r != t h i s −> v a l o r e s . c e n d ( ) ; 24 c i t V a l o r ++) 25 { 26 ValorBase ∗ const v a l o r = ∗ c i t V a l o r ; 27 delete valor ; 28 } 29 30 valores . clear () ; 31 32 f o r ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r c i t V a l o r O u t r o = o u t r o . v a l o r e s . cbegin () ; 33 c i t V a l o r O u t r o != o u t r o . v a l o r e s . c e n d ( ) ; 34 c i t V a l o r O u t r o ++) 35 { 36 ValorBase ∗ const valorOutro = ∗ citValorOutro ; 37 t h i s −> v a l o r e s . p u s h b a c k ( v a l o r O u t r o −>c l o n e ( ) ) ; 38 } 39 40 return ∗ this ; 41 } 42 43 R e g i s t r o : : ˜ R e g i s t r o ( ) 44 { valores . 45 f o r ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r c i t V a l o r = cbegin () ; 46 c i t V a l o r != v a l o r e s . cend ( ) ; 47 c i t V a l o r ++) 48 { 49 ValorBase ∗ const v a l o r = ∗ c i t V a l o r ; 50 delete valor ; 51 } 52 53 valores . clear () ; 54 } 55 56 v o i d R e g i s t r o : : i n s i r a V a l o r ( V a l o r B a s e ∗ c o n s t v a l o r ) 57 { 58 v a l o r e s . p u s h b a c k ( v a l o r −>c l o n e ( ) ) ; 337 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 } void { R e g i s t r o : : removaValor ( c o n s t void Registro : : substituaValor ( const novoValor ) size t ValorBase ∗ const indice , { delete valores [ indice ] ; v a l o r e s [ i n d i c e ] = n o v o V a l o r−>c l o n e ( ) ; } ValorBase ∗ const R e g i s t r o : : r e t o r n e V a l o r ( const { return valores [ indice ] ; } ValorQuantitativo const ∗const size t indice ) Registro : : retorneValorQuant ( const const size t indice ) { r e t u r n d y n a m i c c a s t <V a l o r Q u a n t i t a t i v o ∗ c o n s t >( v a l o r e s [ i n d i c e ] ) ; } ValorQualitativo ∗const Registro : : retorneValorQual ( const s i z e t indice ) const { r e t u r n d y n a m i c c a s t <V a l o r Q u a l i t a t i v o ∗ c o n s t >( v a l o r e s [ i n d i c e ] ) ; } bool Registro : : algumValorInvalidoOuMissingNosIndices ( const indices ) const v e c t o r <s i z e t > { for ( v e c t o r <s i z e t > : : c o n s t i t e r a t o r c i t I n d i c e != i n d i c e s . c e n d ( ) ; c i t I n d i c e ++) c i t I n d i c e = i n d i c e s . cbegin () ; { const s i z e t indice = ∗ c i t I n d i c e ; i f ( indice > valores . size () ) { return true ; } ValorBase ∗ const valorBase = valores [ indice ] ; ValorQuantitativo ∗ const valorQuant = dynamic cast< V a l o r Q u a n t i t a t i v o ∗ c o n s t >( v a l o r B a s e ) ; if ( v a l o r B a s e −>m i s s i n g ( ) formatoValido () ) ) || ( v a l o r Q u a n t && ! v a l o r Q u a n t−> { return true ; } } return false ; } bool { Registro : : algumValorInvalidoOuMissing () for 114 115 116 117 118 const ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r cbegin () ; c i t V a l o r != v a l o r e s . cend ( ) ; c i t V a l o r ++) citValor = valores . { ValorBase ∗ const valorBase = ∗ c i t V a l o r ; ValorQuantitativo ∗ const valorQuant = dynamic cast< V a l o r Q u a n t i t a t i v o ∗ c o n s t >( v a l o r B a s e ) ; 119 120 121 122 123 124 125 126 127 128 129 130 131 indice ) } 101 102 103 104 105 106 107 108 109 110 111 112 113 size t delete valores [ indice ] ; v a l o r e s . erase ( v a l o r e s . cbegin () + indice ) ; if ( v a l o r B a s e −>m i s s i n g ( ) formatoValido () ) ) || ( v a l o r Q u a n t && ! v a l o r Q u a n t−> { return true ; } } return false ; } c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t > &R e g i s t r o : : v a l o r e s ( ) { return valores ; const 338 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 } v e c t o r <s t r i n g > R e g i s t r o : : v a l o r e s S t r i n g ( ) c o n s t { v e c t o r <s t r i n g > v a l o r e s S t r i n g = v e c t o r <s t r i n g >() ; f o r ( v e c t o r <V a l o r B a s e ∗ c o n s t > : : c o n s t i t e r a t o r c i t V a l o r = cbegin () ; c i t V a l o r != v a l o r e s . cend ( ) ; c i t V a l o r ++) { ValorBase ∗ const v a l o r = ∗ c i t V a l o r ; v a l o r e s S t r i n g . p u s h b a c k ( v a l o r −>v a l o r S t r ( ) ) ; } return valores . valoresString ; } Listagem B.116: registro.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #i f n d e f REGISTRO H #d e f i n e REGISTRO H #i n c l u d e #i n c l u d e ” v a l o r q u a l i t a t i v o . h” ” v a l o r q u a n t i t a t i v o . h” #i n c l u d e <v e c t o r > using namespace std ; class Registro { public : Registro () ; R e g i s t r o ( c o n s t R e g i s t r o &o u t r o ) ; ˜ Registro () ; R e g i s t r o &o p e r a t o r= ( c o n s t R e g i s t r o &o u t r o ) ; void i n s i r a V a l o r ( ValorBase ∗ const v a l o r ) ; void removaValor ( c o n s t s i z e t i n d i c e ) ; void s u b s t i t u a V a l o r ( const s i z e t i n d i c e , ValorBase ∗ const novoValor ) ; ValorBase ∗ const r e t o r n e V a l o r ( const s i z e t i n d i c e ) const ; ValorQuantitativo ∗ const retorneValorQuant ( const s i z e t i n d i c e ) const ; ValorQualitativo ∗const retorneValorQual ( const s i z e t indice ) const ; b o o l a l g u m V a l o r I n v a l i d o O u M i s s i n g N o s I n d i c e s ( c o n s t v e c t o r <s i z e t > i n d i c e s ) const ; bool algumValorInvalidoOuMissing () const ; c o n s t v e c t o r <V a l o r B a s e ∗ c o n s t > &v a l o r e s ( ) c o n s t ; v e c t o r <s t r i n g > v a l o r e s S t r i n g ( ) c o n s t ; private : valores ; v e c t o r <V a l o r B a s e ∗ c o n s t > }; #e n d i f Listagem B.117: registro.h 1 #i n c l u d e ” r e g r e s s a o l i n e a r s i m p l e s . h ” 2 3 R e g r e s s a o L i n e a r S i m p l e s : : R e g r e s s a o L i n e a r S i m p l e s ( c o n s t v e c t o r <d o u b l e > & v a l o r e s I n d e p e n d e n t e s , c o n s t v e c t o r <d o u b l e > &v a l o r e s D e p e n d e n t e s ) 4 { 5 c o n s t s i z e t n = min ( v a l o r e s I n d e p e n d e n t e s . s i z e ( ) , v a l o r e s D e p e n d e n t e s . size () ) ; 6 7 //E = s o m a t o r i o 8 d o u b l e Ex = 0 ; 9 d o u b l e Ex2 = 0 ; 10 d o u b l e Ey = 0 ; 11 d o u b l e Exy = 0 ; 12 13 f o r ( s i z e t i = 0 ; i < n ; i ++) 14 { 15 const double x = valoresIndependentes . at ( i ) ; 16 const double y = valoresDependentes . at ( i ) ; 17 18 Ex += x ; 19 Ex2 += x ∗ x ; 20 Ey += y ; 339 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Exy += x ∗ y ; } b e t a = ( ( n ∗ Exy ) − ( Ex ∗ Ey ) ) const const double double / ( ( n ∗ Ex2 ) − pow ( Ex , 2) ) ; mediaX = Ex / n ; mediaY = Ey / n ; a l p h a = mediaY − beta ∗ mediaX ; } RegressaoLinearSimples : : ˜ RegressaoLinearSimples () { } double RegressaoLinearSimples : : alpha ( ) { return alpha ; } double RegressaoLinearSimples : : beta ( ) { return beta ; } const const double RegressaoLinearSimples : : gerarValorDependente ( const valorIndependente ) const double { return alpha + beta ∗ valorIndependente ; } Listagem B.118: regressao linear simples.cpp 1 #i f n d e f REGRESSA LINEAR SIMPLES H 2 #d e f i n e REGRESSA LINEAR SIMPLES H 3 4 #i n c l u d e <v e c t o r > 5 6 u s i n g namespace s t d ; 7 8 c l a s s RegressaoLinearSimples 9 { 10 p u b l i c : 11 RegressaoLinearSimples () {}; 12 R e g r e s s a o L i n e a r S i m p l e s ( c o n s t v e c t o r <d o u b l e > &v a l o r e s I n d e p e n d e n t e s , c o n s t v e c t o r <d o u b l e > &v a l o r e s D e p e n d e n t e s ) ; 13 ˜ RegressaoLinearSimples () ; 14 double gerarValorDependente ( const double valorIndependente ) const ; 15 double alpha ( ) const ; 16 double beta ( ) const ; 17 p r i v a t e : 18 double alpha ; 19 double beta ; 20 } ; 21 22 #e n d i f Listagem B.119: regressao linear simples.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #i n c l u d e ” t a b e l a r e g i s t r o s . h” #i n c l u d e ” u t i l i d a d e s . h” #i n c l u d e <a l g o r i t h m > #i n c l u d e <c a s s e r t > #i n c l u d e <s e t > #i n c l u d e <Q C o r e A p p l i c a t i o n > TabelaDeRegistros ∗ T a b e l a D e R e g i s t r o s : : i n s t a n c i a = NULL ; TabelaDeRegistros ∗TabelaDeRegistros : : obterInstancia () { i f (! instancia ) { 340 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 i n s t a n c i a = new T a b e l a D e R e g i s t r o s ( ) ; } return instancia ; } void { TabelaDeRegistros : : d e s t r u i r I n s t a n c i a () if { ( instancia ) delete instancia ; } i n s t a n c i a = NULL ; } TabelaDeRegistros : : TabelaDeRegistros () { totalRegistros = 0; novoRegistroIndice = 0; } TabelaDeRegistros : : ˜ TabelaDeRegistros () { registros . clear () ; atributos . clear () ; tipos . clear () ; } void TabelaDeRegistros : : i n i c i a l i z e ( c o n s t v e c t o r <v e c t o r <V a l o r B a s e ∗ c o n s t >> &dadosEmColuna , c o n s t v e c t o r <s t r i n g > &a t r i b u t o s , c o n s t v e c t o r <TipoDado AT> &t i p o s , ThreadWorker ∗ t h r e a d ) { assert assert assert assert (! (! (! (! dadosEmColuna . empty ( ) ) ; dadosEmColuna . f r o n t ( ) . empty ( ) ) ; a t r i b u t o s . empty ( ) ) ; t i p o s . empty ( ) ) ; atributos . clear () ; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . c b e g i n ( ) ; c i t A t r i b u t o != a t r i b u t o s . c e n d ( ) ; c i t A t r i b u t o ++) { string atributo = ∗citAtributo ; int i = 2; while ( std : : find ( a t r i b u t o s . cbegin () , a t r i b u t o s . cend ( ) , a t r i b u t o s . cend ( ) ) != { a t r i b u t o += ” ” +U t i l i d a d e s : : d b l T o S t d S t r ( i , 0 ) ; } atributo ) a t r i b u t o s . push back ( a t r i b u t o ) ; } tipos . clear () ; f o r ( v e c t o r <TipoDado AT > : : c o n s t i t e r a t o r c i t T i p o != t i p o s . c e n d ( ) ; c i t T i p o ++) { c o n s t TipoDado AT t i p o = ∗ c i t T i p o ; t i p o s . push back ( t i p o ) ; } citTipo = tipos . cbegin () ; t o t a l R e g i s t r o s = dadosEmColuna [ 0 ] . s i z e ( ) ; const size t const int taxaNotificacao = totalRegistros / 10; t o t a l A t r i b u t o s = dadosEmColuna . s i z e ( ) ; t o t a l R e g i s t r o s <= 10 ? 10 registros . clear () ; s i z e t i = 0; for ( i = 0; i < totalRegistros ; { r e g i s t r o s [ i ] = Registro () ; R e g i s t r o &r = registros [ i ]; if { i ++) ( ( i % t a x a N o t i f i c a c a o ) == 0 && thread ) : 341 i n t ∗ p o r c e n t a g e m = new i n t ( min ( ( i n t ) ( ( i + 1 ) ∗ t o t a l R e g i s t r o s ∗ 50) , 99) ) ; t h r e a d−>N o t i f i c a r ( p o r c e n t a g e m ) ; 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 1.0 / } for { ( size t j = 0; j < totalAtributos ; j ++) r . i n s i r a V a l o r ( dadosEmColuna . a t ( j ) . a t ( i ) ) ; d e l e t e dadosEmColuna . a t ( j ) . a t ( i ) ; } } novoRegistroIndice = i ; } void TabelaDeRegistros : : adicionarAtributo ( c o n s t s t r i n g &n o v o A t r i b u t o , c o n s t TipoDado AT t i p o ) { a t r i b u t o s . push back ( novoAtributo ) ; t i p o s . push back ( t i p o ) ; ValorBase ∗ v a l o r = TabelaDeRegistros : : g e r a r Va l o r ( novoAtributo , for ( MapRegistros : : i t e r a t o r i t R e g i s t r o = i t R e g i s t r o != r e g i s t r o s . end ( ) ; i t R e g i s t r o ++) ”” ) ; r e g i s t r o s . begin () ; { R e g i s t r o & r e g i s t r o = i t R e g i s t r o −>s e c o n d ; registro . insiraValor ( valor ) ; } delete valor ; } TipoDado AT T a b e l a D e R e g i s t r o s : : t i p o ( c o n s t s t r i n g &a t r i b u t o ) { t i p o s [ t h i s −>i n d i c e A t r i b u t o ( a t r i b u t o ) ] ; return } void const T a b e l a D e R e g i s t r o s : : t o d o s I n d i c e s R e g i s t r o s ( v e c t o r <s i z e t > & indicesRetorno ) const { indicesRetorno . reserve ( for totalRegistros ) ; ( MapRegistros : : c o n s t i t e r a t o r c i t R e g i s t r o = c i t R e g i s t r o != r e g i s t r o s . cend ( ) ; c i t R e g i s t r o ++) r e g i s t r o s . cbegin () ; { c o n s t s i z e t i n d i c e R e g i s t r o = c i t R e g i s t r o −> f i r s t ; i n d i c e s R e t o r n o . push back ( i n d i c e R e g i s t r o ) ; } } void { TabelaDeRegistros : : removerAtributo ( const const size t s t r i n g &a t r i b u t o ) i n d i c e A t r i b u t o = t h i s −>i n d i c e A t r i b u t o ( a t r i b u t o ) ; // 1 − Remove da l i s t a de nomes e de t i p o s . a t r i b u t o s . erase ( a t r i b u t o s . cbegin () + indiceAtributo ) ; t i p o s . erase ( t i p o s . cbegin () + indiceAtributo ) ; // 2 − Remove d o s r e g i s t r o s da t a b e l a . r e g i s t r o s . begin () ; f o r ( MapRegistros : : i t e r a t o r i t R e g i s t r o = i t R e g i s t r o != r e g i s t r o s . end ( ) ; i t R e g i s t r o ++) { R e g i s t r o & r e g i s t r o = i t R e g i s t r o −>s e c o n d ; r e g i s t r o . removaValor ( i n d i c e A t r i b u t o ) ; } } bool TabelaDeRegistros : : pertenceAosIntervalos ( c o n s t v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > &i n t e r v a l o s , const double valorDbl ) const { O p e r a c a o op ; double i n f e r i o r ; double s u p e r i o r ; for ( v e c t o r <T a b e l a D e R e g i s t r o s : : I n t e r v a l o > : : c o n s t i t e r a t o r i n t e r v a l o s . cbegin () ; intervalo = 342 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 i n t e r v a l o != i n t e r v a l o s . c e n d ( ) ; i n t e r v a l o ++) { i n f e r i o r = s t d : : g e t <0>(∗ i n t e r v a l o ) ; s u p e r i o r = s t d : : g e t <1>(∗ i n t e r v a l o ) ; op = s t d : : g e t <2>(∗ i n t e r v a l o ) ; s w i t c h ( op ) { c a s e MAIORQUE MENORQUE: { i f ( v a l o r D b l > i n f e r i o r && v a l o r D b l < s u p e r i o r ) { return true ; } break ; } c a s e MAIORQUE MENORIGUALQUE : { i f ( v a l o r D b l > i n f e r i o r && v a l o r D b l <= s u p e r i o r ) { return true ; } break ; } c a s e MAIORIGUALQUE MENORQUE : { i f ( v a l o r D b l >= i n f e r i o r && v a l o r D b l < s u p e r i o r ) { return true ; } break ; } c a s e MAIORIGUALQUE MENORIGUALQUE : { i f ( v a l o r D b l >= i n f e r i o r && v a l o r D b l <= s u p e r i o r ) { return true ; } break ; } } } return false ; } void TabelaDeRegistros : : renomerAtributo ( c o n s t s t r i n g &a t r i b u t o , c o n s t s t r i n g &novoNome ) { a t r i b u t o s [ t h i s −>i n d i c e A t r i b u t o ( a t r i b u t o ) ] = novoNome ; } void T a b e l a D e R e g i s t r o s : : s u b s t i t u a T o d o s P o r I n d i c e ( c o n s t s t r i n g &a t r i b u t o , V a l o r B a s e ∗ c o n s t v a l o r N o v o , c o n s t v e c t o r <s i z e t > &q u a i s I n d i c e s ) { const for size t i n d i c e A t r i b u t o = t h i s −>i n d i c e A t r i b u t o ( a t r i b u t o ) ; ( v e c t o r <s i z e t > : : c o n s t i t e r a t o r c i t I n d i c e = q u a i s I n d i c e s . c b e g i n ( ) ; c i t I n d i c e != q u a i s I n d i c e s . c e n d ( ) ; c i t I n d i c e ++) { const s i z e t indice = ∗ c i t I n d i c e ; r e g i s t r o s . at ( i n d i c e ) ; R e g i s t r o &r e g i s t r o = r e g i s t r o . substituaValor ( indiceAtributo , valorNovo ) ; } } c o n s t v e c t o r <s t r i n g > &T a b e l a D e R e g i s t r o s : : a t r i b u t o s ( ) { return atributos ; } const v e c t o r <s t r i n g > T a b e l a D e R e g i s t r o s : : a t r i b u t o s Q u a n t i t a t i v o s ( ) c o n s t { v e c t o r <s t r i n g > r e t o r n o = v e c t o r <s t r i n g >() ; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . cbegin () ; c i t A t r i b u t o != a t r i b u t o s . cend ( ) ; c i t A t r i b u t o ++) { c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; 343 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 if { ( ehQuant ( a t r i b u t o ) ) r e t o r n o . push back ( a t r i b u t o ) ; } } return retorno ; } v e c t o r <s t r i n g > T a b e l a D e R e g i s t r o s : : a t r i b u t o s Q u a l i t a t i v o s ( ) c o n s t { v e c t o r <s t r i n g > r e t o r n o = v e c t o r <s t r i n g >() ; f o r ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . cbegin () ; c i t A t r i b u t o != a t r i b u t o s . cend ( ) ; c i t A t r i b u t o ++) { c o n s t s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; if { ( ehQualitativo ( atributo ) ) r e t o r n o . push back ( a t r i b u t o ) ; } } return retorno ; } c o n s t T a b e l a D e R e g i s t r o s : : M a p R e g i s t r o s &T a b e l a D e R e g i s t r o s : : r e g i s t r o s ( ) { return registros ; } c o n s t v e c t o r <TipoDado AT> &T a b e l a D e R e g i s t r o s : : t i p o s ( ) { return tipos ; } s i z e t TabelaDeRegistros : : totalAtributos () { return atributos . size () ; } const s i z e t TabelaDeRegistros : : t o t a l R e g i s t r o s () { return totalRegistros ; } const s i z e t TabelaDeRegistros : : indiceAtributo ( const { v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t = f i n d ( a t r i b u t o s . cend ( ) , a t r i b u t o ) ; if { ( cit != const const s t r i n g &a t r i b u t o ) const a t r i b u t o s . cbegin () , a t r i b u t o s . cend ( ) ) cit − return a t r i b u t o s . cbegin () ; } return −1; } v e c t o r <s i z e t > T a b e l a D e R e g i s t r o s : : i n d i c e s A t r i b u t o s ( c o n s t atributos ) const v e c t o r <s t r i n g > & { v e c t o r <s i z e t > i n d i c e s = v e c t o r <s i z e t >() ; for ( v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t A t r i b u t o = a t r i b u t o s . c b e g i n ( ) ; c i t A t r i b u t o != a t r i b u t o s . c e n d ( ) ; c i t A t r i b u t o ++) { const s t r i n g &a t r i b u t o = ∗ c i t A t r i b u t o ; v e c t o r <s t r i n g > : : c o n s t i t e r a t o r c i t = f i n d ( a t r i b u t o s . cend ( ) , a t r i b u t o ) ; if { ( cit != a t r i b u t o s . cend ( ) ) i n d i c e s . push back ( c i t − } } return indices ; a t r i b u t o s . cbegin () , a t r i b u t o s . cbegin () ) ; 344 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 } bool { T a b e l a D e R e g i s t r o s : : ehQuant ( c o n s t const } bool { T a b e l a D e R e g i s t r o s : : ehQuantContinuo ( c o n s t s t r i n g &a t r i b u t o ) const c o n s t s i z e t i = t h i s −>i n d i c e A t r i b u t o ( a t r i b u t o ) ; return t i p o s [ i ] == QUANT CONTINUO ; } bool { TabelaDeRegistros : : ehQuantDiscreto ( const s t r i n g &a t r i b u t o ) const c o n s t s i z e t i = t h i s −>i n d i c e A t r i b u t o ( a t r i b u t o ) ; return t i p o s [ i ] == QUANT DISCRETO ; } bool T a b e l a D e R e g i s t r o s : : e h V a r i a v e l R e f e r e n c i a ( c o n s t s t r i n g &a t r i b u t o , <i n t > &v a l o r e s F a l t a n t e s R e t o r n o , s t r i n g &msg ) c o n s t vector { msg = ” ” ; v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > v a l o r e s = v e c t o r <V a l o r Q u a n t i t a t i v o c o n s t >() ; s e t <i n t > v a l o r e s I n t = s e t <i n t >() ; valoresAtributoQuant ( atributo , true , v a l o r e s ) ; i n t max = s t d : : n u m e r i c l i m i t s <i n t > : : min ( ) ; i n t min = s t d : : n u m e r i c l i m i t s <i n t > : : max ( ) ; for ( v e c t o r <V a l o r Q u a n t i t a t i v o ∗ c o n s t > : : c o n s t i t e r a t o r valores . cbegin () ; c i t V a l o r != v a l o r e s . c e n d ( ) ; c i t V a l o r ++) citValor = { ValorQuantitativo if { ∗const ( v a l o r −>m i s s i n g ( ) || valor = ∗citValor ; ! v a l o r −>f o r m a t o V a l i d o ( ) ) msg = ”O a t r i b u t o de r e f e r ê n c i a m i s s i n g s / i n v á l i d o s ! ” ; return f a l s e ; 376 377 378 379 380 381 382 não pode conter valores c o n s t d o u b l e v a l o r D b l = v a l o r −>v a l o r D b l ( ) ; i f ( ! Utilidades : : i s i n t e g e r ( valorDbl ) ) { msg = ”O a t r i b u t o de r e f e r ê n c i a não pode f r a c i o n á r i o s ! ” ; return f a l s e ; } conter valores } 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 s t r i n g &a t r i b u t o ) c o n s t s i z e t i = t h i s −>i n d i c e A t r i b u t o ( a t r i b u t o ) ; return t i p o s [ i ] == QUANT CONTINUO | | t i p o s [ i ] == QUANT DISCRETO ; if { ( v a l o r e s I n t . find ( valorDbl ) msg = ”O a t r i b u t o repetidos ! ” ; return f a l s e ; de != v a l o r e s I n t . end ( ) ) r e f e r ê n c i a não pode } if { ( v a l o r D b l > max ) max = v a l o r D b l ; } if { ( v a l o r D b l < min ) min = v a l o r D b l ; } v a l o r e s I n t . i n s e r t ( valorDbl ) ; } s e t <i n t > t o d o s = s e t <i n t >() ; for { ( int v a l o r = min ; v a l o r <= max ; todos . i n s e r t ( valor ) ; } v a l o r ++) conter valores ∗ 345 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 for ( s e t <i n t > : : c o n s t i t e r a t o r c i t I n t = v a l o r e s I n t . c b e g i n ( ) ; c i t I n t != v a l