La voz es mia (cutre) porque no he podido encontrar nada por google y actualmente solo tiene las letras en español con posible ampliación a letras en inglés (si encuentro alguna).
Screen:
Descarga Exe: http://www.mediafire.com/?u4oa2f857av35kl
Headers:
Deletreador.hpp:
Código
#include <QtGui> class deletreador { public: deletreador(QString texto,QString idiomasel); private: QString textRead; QSound *letraRead; };
Window.hpp:
Código
#include <QObject> #include <QtGui> #include <QMessageBox> class window : public QMainWindow { Q_OBJECT public: window(); void compruebaPalindromo(); void primeLetra(); void ultimLetra(); void longiCadena(); void funcionReves(); private slots: void deletrear(); public: QWidget *myWindow; QVBoxLayout *mainLayout,*izqLayout,*derLayout; QHBoxLayout *izqderLayout,*buttonLayout; QLineEdit *textIn; QPushButton *acceptButton; QLabel *ultimaLetra,*primeraLetra,*longitudCadena,*palindroma,*mainImage,*mainCongratulations,*mainSpace,*spaceTwo,*spaceThree,*textoReves,*selecIdioma,*labelTexto; QString textoDel,ulLetra,priLetra,textPalin,acumPalin,textoRev,idiomasel; QPixmap *image; QToolBar *languageToolbar; QMessageBox *mensaje; QComboBox *idiomas; };
Sources:
Window.cpp:
Código
#include "window.hpp" #include "deletreador.hpp" window::window() { // Definicion myWindow = new QWidget; mainLayout = new QVBoxLayout; izqLayout = new QVBoxLayout; derLayout = new QVBoxLayout; izqderLayout = new QHBoxLayout; textIn = new QLineEdit; idiomas = new QComboBox; buttonLayout = new QHBoxLayout; labelTexto = new QLabel("Inserta el texto"); labelTexto->setAlignment(Qt::AlignCenter); /***********************************/ idiomas->addItem("Español"); idiomas->addItem("Inglés"); acceptButton = new QPushButton("Deletrear"); mainImage = new QLabel; mensaje = new QMessageBox; mensaje->setText("Cadena Vacia"); image = new QPixmap("Resources/Images/libro.png"); mainImage->setPixmap(*image); mainImage->setAlignment(Qt::AlignCenter); ultimaLetra = new QLabel("La ultima letra es: "); textoReves = new QLabel("La cadena invertida es: "); selecIdioma = new QLabel("Idioma seleccionado: " + idiomas->currentText()); mainSpace = new QLabel(" "); spaceTwo = new QLabel(" "); spaceThree = new QLabel(" "); primeraLetra = new QLabel("La primera letra es: "); longitudCadena = new QLabel("La longitud del texto es: "); palindroma = new QLabel("La palabra es palindroma: "); mainCongratulations = new QLabel("By Overxfl0w"); mainCongratulations->setAlignment(Qt::AlignCenter); mainCongratulations->setText("<font size=3 color=#0000FF>By Overxfl0w to elhacker.net</font>"); idiomas->setFixedSize(100,20); // Conexiones QObject::connect(acceptButton,SIGNAL(clicked()),this,SLOT(deletrear())); // Construccion myWindow->setMinimumSize(420,360); myWindow->setMaximumSize(420,360); buttonLayout->addWidget(idiomas); buttonLayout->addWidget(acceptButton); izqLayout->addWidget(primeraLetra); izqLayout->addWidget(ultimaLetra); izqLayout->addWidget(textoReves); derLayout->addWidget(selecIdioma); derLayout->addWidget(palindroma); derLayout->addWidget(longitudCadena); izqderLayout->addLayout(izqLayout); izqderLayout->addLayout(derLayout); mainLayout->addWidget(mainImage); mainLayout->addWidget(spaceThree); mainLayout->addWidget(labelTexto); mainLayout->addWidget(textIn); mainLayout->addLayout(buttonLayout); mainLayout->addWidget(mainSpace); mainLayout->addLayout(izqderLayout); mainLayout->addWidget(spaceTwo); mainLayout->addWidget(mainCongratulations); myWindow->setLayout(mainLayout); myWindow->setWindowTitle("Speller By Overxfl0w"); myWindow->show(); } void window::deletrear() { if(textIn->text() != "") { primeLetra(); ultimLetra(); funcionReves(); compruebaPalindromo(); longiCadena(); delete selecIdioma; idiomasel = idiomas->currentText(); selecIdioma = new QLabel("Idioma seleccionado: " + idiomasel); derLayout->addWidget(selecIdioma); deletreador deletreador(textIn->text(),idiomasel); } else { mensaje->exec(); } } void window::primeLetra() { priLetra = textIn->text(); delete primeraLetra; primeraLetra = new QLabel("La primera letra es: " + priLetra[0]); izqLayout->addWidget(primeraLetra); } void window::ultimLetra() { int longitud = textIn->text().length(); ulLetra = textIn->text(); delete ultimaLetra; ultimaLetra = new QLabel("La ultima letra es: " +ulLetra[longitud-1]); izqLayout->addWidget(ultimaLetra); } void window::longiCadena() { int longitud2 = textIn->text().length(); delete longitudCadena; longitudCadena = new QLabel("La longitud del texto es: " + QString::number(longitud2)); derLayout->addWidget(longitudCadena); } void window::compruebaPalindromo() { textPalin = textIn->text(); acumPalin = ""; for(int x = textPalin.length()-1;x>=0;x--) { acumPalin = acumPalin + textPalin[x]; } if(textPalin == acumPalin) { delete palindroma; palindroma = new QLabel("La palabra es palindroma: Si"); derLayout->addWidget(palindroma); acumPalin = ""; } else { delete palindroma; palindroma = new QLabel("La palabra es palindroma: No"); derLayout->addWidget(palindroma); acumPalin = ""; } } void window::funcionReves() { textPalin = textIn->text(); textoRev = ""; for(int x = textPalin.length()-1;x>=0;x--) { textoRev = textoRev + textPalin[x]; } delete textoReves; textoReves = new QLabel("La cadena invertida es: " + textoRev); izqLayout->addWidget(textoReves); }
Deletreador.cpp:
Código
#include "deletreador.hpp" #include "window.hpp" #include <windows.h> deletreador::deletreador(QString texto,QString idiomasel) { textRead = texto; if(idiomasel == "Español") { for(int x=0;x<textRead.length();x++) { if(textRead[x] != ' ') { letraRead = new QSound("Resources/Sounds/Spanish/"+textRead[x]+".wav"); letraRead->play(); Sleep(1100); } } } if(idiomasel == "Inglés") { for(int x=0;x<textRead.length();x++) { if(textRead[x] != ' ') { letraRead = new QSound("Resources/Sounds/English/"+textRead[x]+".wav"); letraRead->play(); Sleep(1100); } } } }
Main.cpp:
Código
#include "window.hpp" int main(int argc, char *argv[]) { QApplication app(argc, argv); window window; return app.exec(); }
PD: Usa windows.h para el Sleep si surge cualquier problema, incluir la libreria stdio.h con la función sleep pasándole un int como valor para los segundos.
Un saludo