Estructura de Datos y Algoritmos en C ++
Data Structure and Algorithms in C++
Second Edition
Michael T. Goodrich
Roberto Tamassia
David Mount
Idioma: Ingles
Páginas: 738
typedef struct _nodo
{
int valor;
struct _nodo *siguiente;
}tiponodo;
la variable valor es la razon de ser de la estructura(nodo).
Aqui se almacena el valor del nodo.
struct _nodo sirve para almacenar la direccion del siguiente nodo. Al inicio este
valor el nulo.
typedef tiponodo *pNodo; Nodo para poder crear los nuevos nodos.
typedef tiponodo *cima; Sirve para almacenar el nodo que esta en la cima de todos
los elementos.
pNodo nuevoNodo;//declarando
/*creando*/
nuevoNodo=(pNodo)malloc(sizeof(tiponodo ));
Se crea un nodo con valores nulos.
{
pNodo nuevoNodo;//declarando
/*creando*/
nuevoNodo=(pNodo)malloc(sizeof(tiponodo ));
nuevoNodo->valor=valor;
/*Añadimos la cima a la continuacion del nuevo nodo*/
nuevoNodo->siguiente=*l;
*l=nuevoNodo;
}
int Pop(cima *l)
{
pNodo nodo;//variable auxiliar
int r;
nodo=*l;//apuntando el primer elemento de la cima;
if(!nodo) return 0;
*l=nodo->siguiente;
r=nodo->valor;
free(nodo);//libera la memoria
return r;
}
using namespace std;
typedef struct _nodo
{
int valor;
struct _nodo *siguiente;
}tiponodo;
typedef tiponodo *pNodo;
typedef tiponodo *cima;
/*Protipos de funciones con las cimas*/
void Push(cima *l ,int valor);
int Pop(cima *l);
int main()
{
cima micima=NULL;
Push(&micima,10);
Push(&micima,20);
Push(&micima,30);
cout<<Pop($micima);
cout<<Pop($micima);
cout<<Pop($micima);
return 0;
}
void Push(cima *l, int valor)
{
pNodo nuevoNodo;//declarando
/*creando*/
nuevoNodo=(pNodo)malloc(sizeof(tiponodo ));
nuevoNodo->valor=valor;
/*Añadimos la cima a la continuacion del nuevo nodo*/
nuevoNodo->siguiente=*l;
*l=nuevoNodo;
}
int Pop(cima *l)
{
pNodo nodo;//variable auxiliar
int r;
nodo=*l;//apuntando el primer elemento de la cima;
if(!nodo) return 0;
*l=nodo->siguiente;
r=nodo->valor;
free(nodo);
return r;
}
{
//Si el evento es del Tipo Keypress
if (event->type() == QEvent::KeyPress) {
//Hacemos un Cast
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
qDebug("Tecla Presionada %d", keyEvent->key());
return true;
} else {
//
return QObject::eventFilter(obj, event);
}
}
Ademas incluir en el archivo cpp los siguientes archivos.#include <QKeyEvent>
#include <QDebug>
Ahora vamos instalar el eventFilter, es decir, en que objecto queremos hacer
el filtro de eventos. Para eso colocamos la siguiente linea de codigo en el
constructor de la clase.
ui->lineEdit->installEventFilter(this);
Entonces el archivo quedaria asi.
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> #include <QKeyEvent> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->lineEdit->installEventFilter(this); } MainWindow::~MainWindow() { delete ui; } bool MainWindow::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::KeyPress) { //and here put your own logic!! QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); qDebug("Ate key press %d", keyEvent->key()); return true; } else { // standard event processing return QObject::eventFilter(obj, event); } }
Al Ejecutar y digitar en la aplicacion en la ventana Output debe salir un resultado
similar al de la siguiente imagen.
Nota: EL Debug sirve para mostrar los resultados en la consola de Qt Creator