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:
2 (salarios.cpp)
#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)
Conclusión
Para dar por concluido yo pude entender que la interfaz gráfica implica una o varias
relaciones de generalización y enlazamiento dado por entendido esto podemos decir que
de igual manera si no utilizáramos los métodos y los pasos requeridos para crear la
interfaz grafica y de igual manera crear la interfaz en IU de igual manera aprendimos ha
poner los iconos necesarios, y de igual manera poder crear los diferentes widgets en este
programa de salarios.
Referencias y bibliografía