Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CARRERA DE COMPUTACIÓN
PROGRAMACIÓN ORIENTADA A OBJETOS
PRACTICA 09: INTERFAZ GRAFICA DE USUARIO II
Introducción
Damos básicamente por entendido que Qt es un marco tradicional que se ha adaptado
constantemente a las necesidades de las interfaces gráficas de usuario actuales. No es
sorprendente que este conjunto de herramientas escritas en C haya sido una de las soluciones más
aclamadas para el desarrollo de GUI independiente desde que se lanzó por primera vez hace más
de 20 años. El responsable de esta mala reputación está en todas las herramientas como Qt
Creator o QML, que se dominan en las últimas versiones, que no solo mejoran el flujo de
trabajo general, sino que también crean condiciones para la colaboración entre diseñadores y
programadores.
OBJETIVO:
• Crear una interfaz intuitiva y almacenar datos en un archivo de texto
PRE-REQUISITOS:
a) Computador personal con Microsoft Windows o GNU/Linux
b) Framework Qt
c) IDE Qt Creator
INSTRUCCIONES: 1. Lea detenidamente cada uno de los enunciados propuestos
Los obreros de una fábrica de siderúrgica pueden laborar en tres turnos: matutino,
vespertino y nocturno. Por cada hora que exceda las 40 horas semanales de trabajo,
son consideradas horas extra. Cada uno de los turnos tiene un pago por hora
diferenciado, tal y como se muestra en la siguiente tabla:
Para poder ejecutar de manera correcta el archivo se utilizó la clase QFile y la clase
QstreamText. Lo primero fue abrir un cuadro de diálogo para ubicar el archivo y luego
leer su contenido. Con los datos leídos, se cargó en el widget QtextPlain. Todo el
procedimiento se lo programo en un método el cual nos permitió poder ejecutar de
manera eficaz y correcta el código.
void Salarios::on_actionAcerca_de_Salarios_triggered()
{
//Crear un objeto del cuadro de dialogo
Acerca *dialog = new Acerca(this);
// Enviar datos a la otra ventana (Establecer version)
dialog->setVersion(VERSION);
//Mostrar la ventana en modo Modal(que se ejecute delante)
dialog->exec();
// Luego de cerrar la ventana
2 (salarios.cpp)
Podemos visualizar que el código más importante que se puede visualizar es salarios.cpp
aquí puedo encontrar la mayor parte del código donde puedes ver los métodos
Para calcular, guardar y abrir desde un cuadro de texto y varias funciones a una función
Podemos ver aquí algunas clases para mostrar como QFileDialog donde se llama get.
Con el nombre "Guardar cuenta de salario" después de QText, la línea se anotará cuando
En el momento de la salida, aparecerá un mensaje donde se puede ver dónde quiere
guardar el usuario
#include "salarios.h"
#include "ui_salarios.h"
Salarios::Salarios(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::Salarios)
{
ui->setupUi(this);
m_controlador = new Controlador;
}
Salarios::~Salarios()
{
delete ui;
}
void Salarios::on_btnCalcular_clicked()
{
calculos();
}
void Salarios::on_actionNuevo_triggered()
{
// Limpiar widgets
clean();
// Lipmiar el texto de los calculos
ui->outCAlculos->clear();
// Mostrar mensaje en la barra de estado
ui->statusbar->showMessage("Nuevos calculos de salario", 3000);
void Salarios::clean()
{
ui->inNombre->setText("");
ui->inHoras->setValue(0);
ui->inMatutina->setChecked(true); // Para que se devuelva ha el
horario "matutino"
ui->inNombre->setFocus(); // Para volver el cursor al nombre
void Salarios::calculos()
{
/*
//Obrero modelo("Juan",25,TipoJornada::Matutina);
ui->outCAlculos->appendPlainText(m_controlador->getDAtos());
//qDebug() << m_controlador->getDAtos();
} else{
QMessageBox::critical(
this,
"ERROR",
"Ingrese bien los datos no podemos calcular el
salario");
}
// Limpiar widgets
clean();
// Mostrar mensaje en la barra de estado
ui->statusbar->showMessage("Salario de" + nombre + "
calculado.", 5000);
void Salarios::save()
{
QDir::home().absolutePath() +
"/salarios.txt",
"Archivo de
texto (*.txt)");
}else {
// Mensaje de error
QMessageBox::warning(this,
"Guardar archivo",
"Verifique informacion, no se puede
acceder al archivo para guardar los datos");
}
}
void Salarios::save_as()
{
///QString nombre = ui->inNombre->text();
///int horas = ui->inHoras->value();
QString lala = ui->outCAlculos->toPlainText();
if(lala == ""){
this->close();
}else {
QMessageBox::StandardButton reply = QMessageBox::question(
this,
"Salir","Desea guardar el archivo",
QMessageBox::Save | QMessageBox::Close |
QMessageBox::Cancel);
/*
"Guardar" ,
"No guardar",
"Cancelar");
*/
if(reply == QMessageBox::Save ) {
save();
} else if (reply == QMessageBox::Cancel){
return;
} else{
this->close();
}
/*
void MainWindow::on_pushButton_clicked()
void Salarios::on_actionCalcular_triggered()
{
calculos();
}
void Salarios::on_action_Salir_triggered()
{
save_as();
void Salarios::on_actionGuardar_triggered()
{
save();
}
void Salarios::on_actionAcerca_de_Salarios_triggered()
{
//Crear un objeto del cuadro de dialogo
Acerca *dialog = new Acerca(this);
// Enviar datos a la otra ventana (Establecer version)
dialog->setVersion(VERSION);
//Mostrar la ventana en modo Modal(que se ejecute delante)
dialog->exec();
// Luego de cerrar la ventana
void Salarios::on_actionAbrir_triggered()
{
// Abrir un cuadro de dialogo para seleccionar el path y archivo
a abrir
QString nombreArchivo1 = QFileDialog::getOpenFileName(this,
"Abrir
archivo de calculo de salarios",
QDir::home().absolutePath(),
"Archivo
de texto (*.txt)");
QFile file(nombreArchivo1);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&file);
while (!in.atEnd()) {
QString linea = in.readLine();
ui->outCAlculos->appendPlainText(linea);
}
ui->statusbar->showMessage("Archivo:" + nombreArchivo1 +
"abierto", 4000);
file.close() ;
#include "salarios.h"
#include "ui_salarios.h"
Salarios::Salarios(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::Salarios)
{
ui->setupUi(this);
m_controlador = new Controlador;
}
Salarios::~Salarios()
{
delete ui;
}
void Salarios::on_btnCalcular_clicked()
{
calculos();
}
void Salarios::on_actionNuevo_triggered()
{
// Limpiar widgets
clean();
// Lipmiar el texto de los calculos
ui->outCAlculos->clear();
// Mostrar mensaje en la barra de estado
ui->statusbar->showMessage("Nuevos calculos de salario", 3000);
void Salarios::clean()
{
ui->inNombre->setText("");
ui->inHoras->setValue(0);
ui->inMatutina->setChecked(true); // Para que se devuelva ha el
horario "matutino"
ui->inNombre->setFocus(); // Para volver el cursor al nombre
void Salarios::calculos()
{
/*
//Obrero modelo("Juan",25,TipoJornada::Matutina);
ui->outCAlculos->appendPlainText(m_controlador->getDAtos());
//qDebug() << m_controlador->getDAtos();
} else{
QMessageBox::critical(
this,
"ERROR",
"Ingrese bien los datos no podemos calcular el
salario");
}
// Limpiar widgets
clean();
// Mostrar mensaje en la barra de estado
ui->statusbar->showMessage("Salario de" + nombre + "
calculado.", 5000);
void Salarios::save()
{
QDir::home().absolutePath() +
"/salarios.txt",
"Archivo de
texto (*.txt)");
}else {
// Mensaje de error
QMessageBox::warning(this,
"Guardar archivo",
"Verifique informacion, no se puede
acceder al archivo para guardar los datos");
}
}
void Salarios::save_as()
{
///QString nombre = ui->inNombre->text();
///int horas = ui->inHoras->value();
QString lala = ui->outCAlculos->toPlainText();
if(lala == ""){
this->close();
}else {
QMessageBox::StandardButton reply = QMessageBox::question(
this,
"Salir","Desea guardar el archivo",
QMessageBox::Save | QMessageBox::Close |
QMessageBox::Cancel);
/*
"Guardar" ,
"No guardar",
"Cancelar");
*/
if(reply == QMessageBox::Save ) {
save();
} else if (reply == QMessageBox::Cancel){
return;
} else{
this->close();
}
/*
void MainWindow::on_pushButton_clicked()
void Salarios::on_actionCalcular_triggered()
{
calculos();
}
void Salarios::on_action_Salir_triggered()
{
save_as();
void Salarios::on_actionGuardar_triggered()
{
save();
}
void Salarios::on_actionAcerca_de_Salarios_triggered()
{
//Crear un objeto del cuadro de dialogo
Acerca *dialog = new Acerca(this);
// Enviar datos a la otra ventana (Establecer version)
dialog->setVersion(VERSION);
//Mostrar la ventana en modo Modal(que se ejecute delante)
dialog->exec();
// Luego de cerrar la ventana
}
void Salarios::on_actionAbrir_triggered()
{
// Abrir un cuadro de dialogo para seleccionar el path y archivo
a abrir
QString nombreArchivo1 = QFileDialog::getOpenFileName(this,
"Abrir
archivo de calculo de salarios",
QDir::home().absolutePath(),
"Archivo
de texto (*.txt)");
QFile file(nombreArchivo1);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&file);
while (!in.atEnd()) {
QString linea = in.readLine();
ui->outCAlculos->appendPlainText(linea);
}
ui->statusbar->showMessage("Archivo:" + nombreArchivo1 +
"abierto", 4000);
file.close() ;
5
(Podemos visualizar que el archivo se abrirá en notas ya que es un archivo .txt)
6(Veremos como tienen similitud exacta con lo guardado)
Referencias y bibliografía